Buildroot笔记

您所在的位置:网站首页 zfs 扩容不是很方便 Buildroot笔记

Buildroot笔记

2023-02-16 02:08| 来源: 网络整理| 查看: 265

Buildroot笔记

整理Buildroot笔记,包含配置选项注释、目录结构分析、常用命令、构建示例、 使用技巧。

1.Buildroot基本介绍

Buildroot是Linux平台上一个构建嵌入式Linux系统的框架。整个Buildroot是由Makefile(*.mk)脚本和Kconfig(Config.in)配置文件构成的,因此可以像配置Linux内核一样执行make menuconfig进行配置,编译出一个完整的、可以直接烧写到机器上运行的Linux系统文件(包含bootloader、kernel、rootfs以及rootfs中的各种库和应用程序)。

回想构建开源软件包的流程,工作流大致如下:

获取:获取源代码解压:解压源代码补丁:针对缺陷修复和增加的功能应用补丁配置:根据环境准备构建过程安装:复制二进制和辅助文件到它们的目标目录打包:为在其它系统上安装而打包二进制和辅助文件

可以看到构建每个软件包的工作流几乎是相同的,Buildroot主要就是把这些重复操作自动化,用户只需勾选上所需软件包,便自动完成以上所有操作。其次,U-boot、Linux Kernel的编译工作流的差不多,只是配置的自定义参数更多,在Buildroot设置好了,也就一并生成。

2.Buildroot配置选项

以Buildroot 2019.02.4,imx6ull配置为例,对配置选项进行注释。执行make menuconfig进入一级配置菜单:12345678910Target options ---> Build options ---> Toolchain ---> System configuration ---> Kernel ---> Target packages ---> Filesystem images ---> Bootloaders ---> Host utilities ---> Legacy config options --->

后面将依次对每个子菜单进行注释。约定()内为直接翻译或补充说明,[]内为示例选项含义。

2.1 Target options(目标选项)1234567Target options ---> Target Architecture (ARM (little endian)) ---> //目标处理器的架构和大小端模式 [ARM (little endian)] Target Binary Format (ELF) ---> //目标二进制格式 [ELF] Target Architecture Variant (cortex-A7) ---> //目标处理器核心类型 [cortex-A7] Target ABI (EABIhf) ---> //目标应用程序二进制接口(Application Binary Interface) [EABIhf] ① Floating point strategy (NEON/VFPv4) ---> //浮点运算策略 [NEON/VFPv4] ② ARM instruction set (ARM) ---> //ARM的指令集设置 [ARM]

①:ABI是X86计算机上的,EABI是嵌入式平台上; EABI/EABIhf分别适用于armel和armhf两个不同的架构,armel和armh在对待浮点运算采取了不同的策略(有fpu的arm才能选择EABIhf);②:ARM浮点体系结构(VFP),VFPvX为历史各版本,比如浮点运算指定为VFP4(vector floating point4)指令或neon向量浮点指令;

2.2 Build options(编译选项)1234567891011121314151617181920212223242526272829303132333435363738394041424344Build options ---> Commands ---> //指定下载、解压命令参数选项 (wget --passive-ftp -nd -t 3) Wget command //用于常规FTP/HTTP下载压缩包 [被动传输模式;不创建目录;超时重试次数为3] (svn --non-interactive) Subversion (svn) command //通过SSH下载压缩包 [禁用所有交互式提示] (bzr) Bazaar (bzr) command //版本控制工具Bazaa (git) Git command //版本控制工具Git (cvs) CVS command //版本控制工具CVS (cp) Local files retrieval command //本地文件拷贝命令 (scp) Secure copy (scp) command //基于ssh的安全的远程文件拷贝命令 (hg) Mercurial (hg) command //版本控制工具hg (gzip -d -c) zcat command //zip包解压缩查看 [解压zip文件 解压到指定路径,源文件不消失] (bzcat) bzcat command //bz2包解压缩查看 (xzcat) xzcat command //xz包解压缩查看 (lzip -d -c) lzcat command //lz包解压缩查看 () Tar options //bz2包解压缩查看 (/home/hceng/imx6ul_buildroot/configs/imx6ulevk_defconfig) Location to save buildroot config //指定配置文件保存路径 ($(TOPDIR)/dl) Download dir //指定文件下载保存路径 [./dl/] ($(BASE_DIR)/host) Host dir //指定主机编译所需工具安装目录 [./output/host] Mirrors and Download locations ---> //镜像和下载位置 () Primary download site (http://sources.buildroot.net) Backup download site (https://cdn.kernel.org/pub) Kernel.org mirror (http://ftpmirror.gnu.org) GNU Software mirror (http://rocks.moonscript.org) LuaRocks mirror (http://cpan.metacpan.org) CPAN mirror (Perl packages) (0) Number of jobs to run simultaneously (0 for auto) //指定编译时运行的CPU核心数 [0自动] [ ] Enable compiler cache //使能编译器缓存 [ ] build packages with debugging symbols //启用带调试编译软件包 [*] strip target binaries //binaries和libraries在打包到target目录的时候会被strip命令裁减掉调试信息 () executables that should not be stripped //剥离时跳过可执行文件 () directories that should be skipped when stripping //剥离时跳过的目录 gcc optimization level (optimize for size) ---> //GCC优化等级 [优化大小] [ ] Enable google-breakpad support //启动崩溃日志收集 libraries (shared only) ---> //库类型 [只共享库] ($(CONFIG_DIR)/local.mk) location of a package override file //包覆盖文件的位置 () global patch directories //全局补丁目录 Advanced ---> [*] paranoid check of library/header paths //检查库/头文件路径 [ ] Force the building of host dependencies //强制构建主机依赖 [ ] Make the build reproducible (experimental) //构建可重复(实验) *** Security Hardening Options *** //安全加固选项 Stack Smashing Protection (None) ---> //堆栈粉碎保护 [无] RELRO Protection (None) ---> //RELRO只读重定位(Relocation Read Only)保护 [无] Buffer-overflow Detection (FORTIFY_SOURCE) (None) ---> //缓冲区溢出检测(强制源) [无]2.3 Toolchain(工具链)12345678910111213141516171819202122232425Toolchain ---> Toolchain type (External toolchain) ---> //工具链类型 [外部工具链] *** Toolchain External Options *** //外部工具链选项 Toolchain (Custom toolchain) ---> //工具链 [自定义工具链] Toolchain origin (Toolchain to be downloaded and installed) ---> //工具链来源 [工具链将被下载安装] (https://releases.linaro.org/……) Toolchain URL //工具链下载链接 ① (bin) Toolchain relative binary path //工具链二进制文件相对路径 [bin目录] ($(ARCH)-linux-gnueabihf) Toolchain prefix //工具链前缀 [arm-linux-gnueabihf] External toolchain gcc version (6.x) ---> //外部工具链GCC版本 [6.x] External toolchain kernel headers series (4.6.x) ---> //外部工具链内核头文件系列 [4.6.x] External toolchain C library (glibc/eglibc) ---> //外部工具链C库 [glibc/eglibc] ② [*] Toolchain has SSP support%2f //工具链是否支持SSP%2f ③ [*] Toolchain has RPC support%2f //工具链是否支持RPC%2f ④ [*] Toolchain has C++ support%2f //工具链是否支持C++%2f [*] Toolchain has Fortran support%2f //工具链是否支持Fortran%2f (一种编程语言) () Extra toolchain libraries to be copied to target //复制额外工具链库到目标 [ ] Copy gdb server to the Target //复制GDB服务到目标 *** Host GDB Options *** //主机GDB选项 [ ] Build cross gdb for the host //为主机交叉编译GDB *** Toolchain Generic Options *** //工具链通用选项 [ ] Copy gconv libraries //复制gconv库 (gconv库用于在不同的字符集之间进行转换) [*] Enable MMU support //使能MMU支持 () Target Optimizations //目标优化 (需设置前面的GCC优化等级) () Target linker options //目标链接器选项 (构建目标时传递给链接器的额外选项) [ ] Register toolchain within Eclipse Buildroot plug-in //在Eclipse Buildroot插件中注册工具链

①:受限每行字数,该处完整链接为:https://releases.linaro.org/components/toolchain/binaries/6.2-2016.11/arm-linux-gnueabihf/gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf.tar.xz;②:可选的有uClibc/uClibc-ng、glibc/eglibc、musl (experimental),介绍如下:

glibc(GNU C Library):常用于桌面、服务器中的GNU/Linux类系统中的C语言标准库,支持多种系统平台,功能齐全,但也相对比较臃肿和庞大;eglibc(Embedded glibc):glibc的一种变体,目的在于将glibc用于嵌入式系统;uClibc/uClibc-ng:uClibc-ng是uClibc的分支,它们都是为嵌入式设计的小型的C语言标准库,适合标准和无MMU的Linux系统上运行;musl:一个轻量级的C标准库,目前在buildroot里是实验阶段;对比参考:Comparison of C/POSIX standard library implementations for Linux

③:堆栈粉碎保护(Stack Smashing Protection);④:远程过程调用(Remote Procedure Call),主要用于NFS;

2.4 System configuration(系统配置)12345678910111213141516171819202122232425262728293031323334System configuration ---> 系统配置 Root FS skeleton (default target skeleton) ---> //根文件系统框架 [典型目标框架] (ebf6ull) System hostname //系统主机名字(自取任意) [ebf6ull] (Welcome to ixm6ull Buildroot!) System banner //系统开机提示 [Welcome to ixm6ull Buildroot!] Passwords encoding (sha-256) ---> //密码编码 [sha-256] Init system (systemV) ---> //初始化系统方案 [systemV] ① /dev management (Dynamic using devtmpfs + eudev) ---> //dev管理方案 [Dynamic using devtmpfs + eudev] ② (system/device_table.txt) Path to the permission tables //权限表路径 [ ] support extended attributes in device tables //支持设备表中的扩展属性 [ ] Use symlinks to /usr for /bin, /sbin and /lib //是否将/bin,/sbin,/lib链接到/usr [*] Enable root login with password //使能root登陆密码 () Root password //设置root密码 /bin/sh (bash) ---> //选择shell类型 [bash] ③ [*] Run a getty (login prompt) after boot ---> //启动后运行getty(登录提示)---> (ttymxc0) TTY port //设置TTY硬件端口 Baudrate (keep kernel default) ---> //比特率 [与内核保持一致] (vt100) TERM environment variable //TERM环境变量 (终端类型xterm、vt100) () other options to pass to getty //传递给getty的其他选项 [*] remount root filesystem read-write during boot //在引导期间安装根文件系统支持读和写 (eth0) Network interface to configure through DHCP //设置DHCP配置的网络接口 [eth0] (/bin:/sbin:/usr/bin:/usr/sbin) Set the system's default PATH //设置系统的默认路径 [*] Purge unwanted locales //清除不需要的区域设置 (C en_US) Locales to keep //要保留的语言环境 () Generate locale data //生成区域设置数据 [ ] Enable Native Language Support (NLS) //启用本地语言支持(NLS) -*- Install timezone info //安装时区信息 (default) timezone list //时区清单 [典型] (Etc/UTC) default local time //用户表的路径 () Path to the users tables (board/hceng/nxp-imx6ull/rootfs-overlay) Root filesystem overlay directories //根文件系统覆盖目录 () Custom scripts to run before creating filesystem images //在创建文件系统映像之前运行的自定义脚本 () Custom scripts to run inside the fakeroot environment //自定义脚本在fakeroot(模拟root权限)环境中运行 (board/……) Custom scripts to run after creating filesystem images //创建文件系统映像后运行的自定义脚本 ④ () Extra arguments passed to custom scripts //传递给自定义脚本的额外参数

①:可选选项有BusyBox、systemV、systemd、None:

BusyBox init:1.不支持运行等级,设置的运行等级将被忽略,要使用运行等级,请使用sysvinit;2.语法格式:::::process执行所在的tty设备,内容为/dev目录中tty设备的文件名;:此字段完全被忽略;:支持sysinit、respawn、askfirst、wait、once、restart、ctrlaltdel、shutdown;:指定要执行的进程及其命令行;3.BusyBox init程序将在启动时读取/etc/inittab文件,以了解该做什么,默认inittab存储在./package/busybox/inittab;4.inittab除了安装几个重要的文件系统之外,还要启动/etc/init.d/rcS中的shell脚本,并启动一个getty程序(提供一个登录提示);

systemV:1.使用传统sysvinit程序,之前大多数台式机Linux发行版都使用该方案,现在有些变为了Upstart或Systemd;2.在/ect目录下会生成init.d、rc0.d、rc1.d、rc2.d、rc3.d、rc4.d、rc5.d、rc6.d、rc.loacl;init.d里面包含的是真正的服务脚本;rcN.d里面是链接向init.d里脚本的软链接,N表示运行级别,进入哪个运行级别,就会执行对应rcN.d文件夹的脚本;当所有的当前运行级别的脚本都运行完了之后,会运行rc.local;3.脚本的命名规则:以[S|K]+NN+其它,以S开头的是启动脚本,以K开头的是停止脚本,init进程会按照S或者K后面的数字的顺序来启动或停止服务;4.sysvinit还使用/etc/inittab文件(与BusyBox的语法略有不同),默认inittab存储在./package/sysvinit/inittab;

systemd:1.systemd是Linux的新一代init系统,以前的运行级别(runlevel)的概念被新的运行目标(target)所取代;2.支持并行化任务;采用socket式与D-Bus总线式激活服务;按需启动守护进程(daemon);支持快照和系统恢复;3.功能强大的同时,也带来了相当大数量的大型依赖:dbus,udev等;Systemd 的简介和特点

②:/dev设备文件的管理方式,可选选项有四个:

Static using device table: 使用静态的设备表,/dev将根据system/device_table _dev.txt的内容创建设备,进入系统添加或删除设备时,无法自动更新; Dynamic using devtmpfs only:在系统启动过程中,会动态生成/dev文件,进入系统添加或删除设备时,无法自动更新; Dynamic using devtmpfs + mdev:在前面devtmpfs的基础上加入mdev用户空间实用程序,进入系统添加或删除设备时,可以自动更新,自动创建规则在/etc/mdev.conf; Dynamic using devtmpfs + eudev:在前面devtmpfs的基础上加入eudev用户空间守护程序,eudev是udev的独立版本,是Systemd的一部分,提供更多的功能也更占用资源;

③:在Linux下编写shell脚本文件时,经常会看到在第一行中标注#!/bin/bash,这句话的意思是告诉系统强制用bash,避免出现一些不兼容的问题。因此,除了bash外,还有很多shell工具,比如这里可选busybox自带的shell、小巧但功能很少的dash、高效紧凑的mksh、功能强大体积也稍大的zsh。此外,可以通过ls -l /bin/sh查看当前使用的是何种shell工具。

④:受限每行字数,该处完整路径为board/freescale/common/imx/post-image.sh。

这里是如何产生sdcard.img,用于sd卡启动的原理部分。针对我现在imx6ull的情况,board/freescale/common/imx目录下有两个文件值得关注:genimage.cfg.template和post-image.sh。先来看genimage.cfg.template:

12345678910111213141516171819202122232425262728293031323334353637383940# Minimal SD card image for the Freescale boards Template## We mimic the .sdcard Freescale's image format:# * the SD card must have 1 kB free space at the beginning,# * U-Boot is dumped as is,# * a FAT partition at offset 8 MB is containing zImage/uImage and DTB files# * a single root filesystem partition is required (ext2, ext3 or ext4)#image boot.vfat { vfat { files = { %FILES% } } size = 16M}image sdcard.img { hdimage { } partition u-boot { in-partition-table = "no" image = "%UBOOTBIN%" offset = 1024 } partition boot { partition-type = 0xC bootable = "true" image = "boot.vfat" offset = 8M } partition rootfs { partition-type = 0x83 image = "rootfs.ext2" }}

该配置文件显示会生成两个文件,一个boot.vfat,一个sdcard.img;boot.vfat由"%FILES%"所表示内容组成(后面会得知是kernel+dtb);sdcard.img有四个分区,第一个是空,第二个是偏移1024字节(1k)后,内容为"%UBOOTBIN%"(u-boot),第三个为偏移8M后,存放前面生成的boot.vfat(kernel+dtb),最后存放rootfs.ext2。此时分区情况如下:

分区类型和数值的对应关系可通过该文章查询:List of partition identifiers for PCs or Listing of MBR/EBR Partition Types此时将sd卡插入Windows电脑,可以发现只能识别存放boot.vfat(kernel+dtb)的分区,因为该分区为FAT32格式,Windows可以识别,而存放rootfs.ext2的分区为ext2/3/4,Windows是无法识别的,与生活常识是吻合的。另外,如果想在SD卡创建其它自定义分区,可以再加一个partition:1234partition user { partition-type = 0xC size = 10M}

再来看看post-image.sh是如何解析genimage.cfg.template:

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778#!/usr/bin/env bash## dtb_list extracts the list of DTB files from BR2_LINUX_KERNEL_INTREE_DTS_NAME# in ${BR_CONFIG}, then prints the corresponding list of file names for the# genimage configuration file#dtb_list(){local DTB_LIST="$(sed -n 's/^BR2_LINUX_KERNEL_INTREE_DTS_NAME="\([\/a-z0-9 \-]*\)"$/\1/p' ${BR2_CONFIG})"for dt in $DTB_LIST; doecho -n "\"`basename $dt`.dtb\", "done}## linux_image extracts the Linux image format from BR2_LINUX_KERNEL_UIMAGE in# ${BR_CONFIG}, then prints the corresponding file name for the genimage# configuration file#linux_image(){if grep -Eq "^BR2_LINUX_KERNEL_UIMAGE=y$" ${BR2_CONFIG}; thenecho "\"uImage\""elif grep -Eq "^BR2_LINUX_KERNEL_IMAGE=y$" ${BR2_CONFIG}; thenecho "\"Image\""elseecho "\"zImage\""fi}genimage_type(){if grep -Eq "^BR2_PACKAGE_FREESCALE_IMX_PLATFORM_IMX8M=y$" ${BR2_CONFIG}; thenecho "genimage.cfg.template_imx8"elif grep -Eq "^BR2_TARGET_UBOOT_SPL=y$" ${BR2_CONFIG}; thenecho "genimage.cfg.template_spl"elseecho "genimage.cfg.template"fi}uboot_image(){if grep -Eq "^BR2_TARGET_UBOOT_FORMAT_DTB_IMX=y$" ${BR2_CONFIG}; thenecho "u-boot-dtb.imx"elif grep -Eq "^BR2_TARGET_UBOOT_FORMAT_IMX=y$" ${BR2_CONFIG}; thenecho "u-boot.imx"fi}main(){local FILES="$(dtb_list) $(linux_image)"local UBOOTBIN="$(uboot_image)"local GENIMAGE_CFG="$(mktemp --suffix genimage.cfg)"local GENIMAGE_TMP="${BUILD_DIR}/genimage.tmp"sed -e "s/%FILES%/${FILES}/" \-e "s/%UBOOTBIN%/${UBOOTBIN}/" \board/freescale/common/imx/$(genimage_type) > ${GENIMAGE_CFG}rm -rf "${GENIMAGE_TMP}"genimage \--rootpath "${TARGET_DIR}" \--tmppath "${GENIMAGE_TMP}" \--inputpath "${BINARIES_DIR}" \--outputpath "${BINARIES_DIR}" \--config "${GENIMAGE_CFG}"rm -f ${GENIMAGE_CFG}exit $%2f}main $@

可以在main看到,FILES为dtb和kernel,UBOOTBIN为u-boot,再传入配置文件。最后使用genimage生成,genimage在后面2.9Host utilities(主机工具)部分需要勾选上,它的作用是给定根文件系统树,生成多个文件系统和闪存镜像的工具。

2.5 Kernel(内核配置)123456789101112131415161718192021222324252627282930313233[*] Linux Kernel //使能编译内核 *** Linux kernel in thumb mode may be broken with binutils >= 2.29 *** //binutils>=2.29可能会破坏thumb模式下的内核 Kernel version (Custom Git repository) ---> //内核版本 [自定义Git仓库](https://git.dev.tencent.com/……) URL of custom repository //自定义仓库网址 ①(origin/master) Custom repository version //自定义仓库版本() Custom kernel patches //自定义内核补丁 Kernel configuration (Using an in-tree defconfig file) ---> //内核配置 [使用项目内defconfig文件](imx_v7_ebf) Defconfig name //配置文件名字 (不要_defconfig)() Additional configuration fragment files //其他配置片段文件() Custom boot logo file path //自定义启动logo文件路径 Kernel binary format (zImage) ---> //内核二进制文件格式 [zImage] ② Kernel compression format (gzip compression) ---> //内核压缩格式 [gzip压缩][*] Build a Device Tree Blob (DTB) //构建设备树二进制文件(DTB文件)(imx6ull-14x14-evk imx6ull-14x14-ebf) In-tree Device Tree Source file names //项目里设备树源文件名 (不要.dts)() Out-of-tree Device Tree Source file paths //项目外设备树源文件路径[ ] Build Device Tree with overlay support //使能设备树文件覆盖支持[*] Install kernel image to /boot in target //安装内核镜像到/boot目录[*] Needs host OpenSSL //主机需要OpenSSL[ ] Needs host libelf //主机需要libelf (用于读取,修改或创建ELF文件) Linux Kernel Extensions ---> //Linux内核扩展 [ ] Adeos/Xenomai Real-time patch //Adeos/Xenomai实时时钟补丁 [ ] RTAI Real-time patch //RTAI实时时钟补丁 [ ] ev3dev Linux drivers //ev3dev Linux驱动 [ ] FB TFT drivers //FB TFT驱动 [ ] Aufs Filesystem Module patch //Aufs文件系统模块补丁 Linux Kernel Tools ---> //Linux内核工具 [ ] cpupower //用于检查、调整CPU省电相关功能 [ ] gpio //用于控制、监控GPIO,仅在4.8版本提供 ③ [ ] iio //用于控制、监控iio设备,仅在4.7版本提供 [ ] pci //用于测试特定PCI端点, 仅在4.20版本提供 [ ] perf //用于Linux性能分析 [ ] selftests //用于内核自我测试 [ ] tmon //用于用户访问系统相关的热信息

①:受限每行字数,该处完整链接为https://git.dev.tencent.com/weidongshan/imx6ull_kernel.git;②:分别介绍下这几个内核镜像格式,以及一些其它格式:

vmlinuz·:静态编译出来的最原始的ELF文件,包括了内核镜像、调试信息、符号表等内容;其中 “vm” 代表 “Virtual Memory”;Image:将所有的符号和重定位信息都删除,只剩下二进制数据的内核代码,此时还没经过压缩;zImage:是vmlinux加上解压代码(用于自解压)经过gzip压缩后的文件,适用于小内核,常见于ARM;bzImage:是vmlinux加上解压代码(用于自解压)经过gzip压缩后的文件,适用于大内核,常见于x86,“bz”表示 “big zImage”;uImage:是U-Boot专用的镜像文件,使用mkimage工具在zImage之前加上一个长度为0x40的头信息(tag),在头信息内说明了该镜像文件的类型、加载位置、生成时间、大小等信息;

参考资料:linux内核镜像格式

③:使用新的ABI,弃用sysfs;

2.6 Target packages(目标包配置)

目标包配置内容有点多,二级目录如下:12345678910111213141516171819202122232425262728Target packages ---> [*] BusyBox //使能编译BusyBox (package/busybox/busybox.config) BusyBox configuration file to use%2f //设置BusyBox配置文件路径 () Additional BusyBox configuration fragment files //其他BusyBox配置片段文件 -*- Show packages that are also provided by busybox //列出部分busybox也提供的包 [ ] Enable SELinux support //SELinux支持(安全增强型Security-Enhanced Linux) [ ] Individual binaries //每个应用程序作为单独二进制文件(为SELinux提供支持) [ ] Install the watchdog daemon startup script //在启动脚本安装看门狗守护程序 Audio and video applications ---> //音频和视频应用 Compressors and decompressors ---> //压缩和解压 Debugging, profiling and benchmark ---> //调试、分析和基准测试 Development tools ---> //开发工具 Filesystem and flash utilities ---> //文件系统和闪存实用程序 Fonts, cursors, icons, sounds and themes ---> //字体,游标,图标,声音和主题 Games ---> //游戏 Graphic libraries and applications (graphic/text) ---> //图形库和应用程序(图形/文本) Hardware handling ---> //硬件处理 Interpreter languages and scripting ---> //编程语言和脚本 Libraries ---> //库 Mail ---> //邮箱 Miscellaneous ---> //杂项 Networking applications ---> //网络应用 Package managers ---> //安装包管理 Real-Time ---> //实时时钟 Security ---> //安全 Shell and utilities ---> //Shell和程序 System tools ---> //系统工具 Text editors and viewers ---> //文版编辑和浏览

接下来对每个二级目录的子目录注释。

2.6.1 Audio and video applications123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051Audio and video applications ---> [*] alsa-utils ---> //ALSA声卡测试和音频编辑 [ ] atest //ALSA Asoc驱动测试工具 [ ] aumix //声卡混音器 [ ] bellagio //基于OpenMAX的多媒体访问 [ ] bluez-alsa //蓝牙音频ALSA后端 [ ] dvblast //MPEG-2/TS解复用和流媒体 [ ] dvdauthor //创作DVD视频光盘文件和目录结构 [ ] dvdrw-tools //创作蓝光光盘和DVD光盘媒体 [ ] espeak //用于英语和其他语言的语音合成器软件 [ ] faad2 //开源的MPEG-4和MPEG-2 AAC解码器 [*] ffmpeg ---> //录制、转换以及流化音视频的完整解决方案 [ ] flac //开源无损音频编解码器 [ ] flite //小型、快速的TTS系统(TextToSpeech),即文字转语音 [ ] gmrender-resurrect //基于gstreamer的UPnP(DLNA)媒体渲染器 [ ] gstreamer 0.10 //开源多媒体框架0.10版本 [ ] gstreamer 1.x //开源多媒体框架1.x版本,与前面的0.10不兼容 [ ] jack2 //JACK音频连接套件(包含服务器和示例客户端) *** kodi needs python w/ .py modules, //Kodi开源媒体播放器软件应用程序的需要条件 a uClibc or glibc toolchain w/ C++, threads, wchar, dynamic library, gcc >= 4.8, *** *** kodi needs an OpenGL EGL backend with OpenGL support *** [ ] lame //高质量的MPEG Audio Layer III(MP3)编码器 [ ] madplay //libmad的命令行前端,一个高质量的MPEG音频解码器 [ ] mimic //快速,轻量级的文本到语音引擎 *** miraclecast needs systemd and //miraclecast无线屏幕投影的需要条件 a glibc toolchain w/ threads and wchar *** [ ] mjpegtools //录制视频和回放,简单的剪切和粘贴编辑以及音频和视频的MPEG压缩 [ ] modplugtools //支持播放MOD、S3M、XM等格式音乐文件 [ ] motion //监控摄像机视频信号的程序,可以检测物体运动 [*] mpd ---> //用于播放音乐的服务器端应用程序 [ ] mpd-mpc //MPD的简约命令行界面 [ ] mpg123 //MPEG音频播放器 [ ] mpv //MPlayer的一个分支,有些新功能 [ ] multicat //高效地操作多播流,特别是MPEG-2传输流 [ ] musepack //音频高品质压缩 [ ] ncmpc //功能齐全的MPD客户端 [ ] opus-tools //Opus编解码器命令行工具 [ ] pulseaudio //声音服务代理,可队声音进行操作再播放 [ ] sox //可录制、播放、格式转换、修改音频文件 [ ] squeezelite //Logitech媒体服务器客户端 [ ] tstools //处理MPEG数据的跨平台命令行工具 [ ] twolame //优化的MPEG Audio Layer 2(MP2)编码器 [ ] udpxy //将UDP流量转发到请求HTTP客户端的中继守护程序 [ ] upmpdcli //MPD音乐播放器前端 [ ] v4l2grab //用于从V4L2设备获取JPEG的程序 [ ] v4l2loopback //创建虚拟视频设备 [ ] vlc //可播放大多数多媒体文件以及DVD、音频CD、VCD和各种流媒体协议 [ ] vorbis-tools //用于Ogg格式文件的独立播放器、编码器和解码器,也可作为流媒体播放器 [ ] wavpack //提供无损,高质量的有损和独特的混合压缩模式 [ ] yavta //一个V4L2测试应用程序 [ ] ympd //MPD网页客户端2.6.2 Compressors and decompressors123456789101112131415Compressors and decompressors ---> [ ] brotli //通用无损压缩库 -*- bzip2 //免费的压缩工具 [ ] gzip //标准GNU压缩器 [ ] lz4 //快速的无损压缩 [ ] lzip //类似gzip或bzip2 [ ] lzop //与gzip相似 [ ] p7zip //Unix的7-zip命令行版本 [ ] pigz //是gzip的全功能替代品 [ ] pixz //是xz的并行索引版本 [ ] unrar //rar文件解压 [ ] unzip //zip文件解压 [*] xz-utils //用于处理XZ压缩的命令行工具,包括xz、unxz、xzcat、xzgrep等 [ ] zip //压缩和解压zip文件 [ ] zstd //Zstandard或zstd的简短版本2.6.3 Debugging, profiling and benchmark12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849[ ] blktrace //对通用块层(block layer)的I/O跟踪机制,它能抓取详细的I/O请求,发送到用户空间 [ ] bonnie++ //执行一系列简单的硬盘驱动器和文件系统性能测试 [ ] cache-calibrator //用于分析计算机(缓存)内存系统并提取有用信息,以及作为负载生成器进行实时测试 *** clinfo needs an OpenCL provider *** //查询OpenCL参数和是否安装正常 [ ] dhrystone //测量处理器运算能力的最常见基准程序之一,常用于处理器的整型运算性能的测量 [ ] dieharder //随机数/均匀偏差发生器测试仪,适用于测试软件RNG和硬件RNG [ ] dmalloc //一个调试分配内存库,替代系统的malloc、realloc、calloc、free等 [ ] dropwatch //交互式监视和记录内核丢弃的数据包 [ ] dstat //取代vmstat、iostat、netstat、ifstat等,监控系统运行状况、基准测试、排除故障 [ ] dt //用于验证外围设备、文件系统、驱动程序或操作系统支持的任何数据流的正常运行 [ ] duma //检测意外的内存访问(Detect Unintended Memory Access) [ ] fio //一种I/O工具,用于基准测试和压力/硬件验证 [ ] gdb //强大的UNIX下的程序调试工具 [ ] google-breakpad //用于崩溃日志收集 [ ] iozone //一个文件系统基准测试工具,测试不同的操作系统中文件系统的读写性能 [ ] kexec //用一个运行的内核去运行一个新内核,就像运行一个应用程序一样 [ ] ktap //基于脚本的Linux动态跟踪工具,允许用户跟踪Linux内核动态 [ ] kvm-unit-tests //为KVM提供单元测试 [ ] latencytop //专注于解决音频跳跃、桌面卡顿、服务器过载等延迟 [ ] lmbench //一种性能检测工具,提供内存、网络、内核等多方面的测试 [ ] lsof //列出当前系统打开文件的工具(LiSt Open Files) [ ] ltp-testsuite //测试Linux内核和相关特性的工具集合 [ ] ltrace //能够跟踪进程的库函数调用,显示哪个库函数被调用 [ ] lttng-babeltrace //LTTng(Linux Trace Toolkit Next Generation)跟踪读写库、转换[ ] lttng-modules //用于LTTng 2.x内核跟踪基础结构的Linux内核模块 [ ] lttng-tools //用于LTTng 2.x跟踪基础结构的用户空间实用程序 [ ] memstat //列出正在消耗虚拟内存的所有进程、可执行程序、共享库 [ ] netperf //网络性能基准工具 [ ] netsniff-ng //高性能的Linux网络分析器和网络工具包 [ ] nmon //监控系统的 CPU、内存、网络、硬盘、文件系统、NFS、高耗进程、资源等信息 [ ] oprofile //性能监测工具,从代码层面分析程序的性能消耗情况,找出程序性能的问题点 [ ] pax-utils //用于ELF 32/64二进制文件的ELF相关工具,可以检查文件的安全相关属性 [ ] pv //基于终端的工具,用于监控通过管道的数据进度 [ ] ramspeed/smp //用于测量多处理器计算机的缓存和内存性能 [ ] ramspeed //用于测量缓存和内存性能 [ ] rt-tests //用于测试Linux系统实时行为的程序集 [ ] spidev_test //基于spidev驱动程序的SPI测试程序 [ ] strace //用于诊断、调试和教学的Linux用户空间跟踪器 [ ] stress //用于POSIX系统的工作负载生成器 [ ] stress-ng //以各种可选择的方式对计算机系统进行压力测试 [ ] sysdig //从正在运行的Linux实例捕获系统状态和活动、然后保存、过滤和分析 [ ] tcf-agent //一个守护进程,它提供可供本地和远程客户端使用的TCF服务 [ ] tinymembench //内存基准测试程序 [ ] trace-cmd //帮助开发人员了解Linux内核的运行时行为,以便进行故障调试或性能分析 [ ] trinity //Linux系统调用模糊测试 [ ] uclibc-ng-test //编译并安装uClibc-ng测试套件 [ ] valgrind //用于调试和分析Linux程序的工具 [ ] vmtouch //用于学习和控制unix和unix类系统的文件系统缓存的工具 [ ] whetstone //测试双精度浮点数操作的速度和效率2.6.4 Development tools123456789101112131415161718192021222324252627[ ] binutils //安装binutils(BinaryUtilities)二进制工具的集合,比如ld、as [ ] bsdiff //创建补丁path或文件比较diff [ ] check //单元测试框架 [ ] ctest //CTest是CMake集成的一个测试工具,可以自动配置、构建、测试、展现测试结果 [ ] cppunit //著名的JUnit框架的C++端口,用于单元测试 [ ] cunit //自动化测试框架 [ ] cvs //代码版本控制软件 [ ] cxxtest //C++的单元测试框架 [ ] diffutils //GNU diff,文件每行比较 [ ] dos2unix //将DOS格式(CRLF)的文本文件转换成UNIX格式(LF) [ ] findutils //基本目录搜索工具,比如find、xargs、locate、updatedb等 [ ] flex //快速词法分析器生成器,用于生成在文本上执行模式匹配的程序的工具 [ ] gawk //一种特殊用途的编程语言,它是数据驱动的而不是程序的 [ ] gettext //提供一个框架来帮助其他GNU包生成多语言消息 [ ] git //代码版本控制软件 [ ] git-crypt //用于在git存储库中对文件进行透明加密和解密 [ ] gperf //一个“完美的哈希函数”生成器 [ ] grep //GNU正则表达式匹配器 [ ] jo //从shell输出JSON的命令行处理器 [ ] jq //类似用于JSON数据的sed,用来切片和过滤,映射和转换结构化数据 [ ] libtool //一个通用的库支持脚本,藏了在一致的可移植界面背后使用共享库的复杂性 [ ] make //用于控制程序源文件中程序的可执行文件和其他非源文件的生成 [ ] patch //获取补丁文件(包含差异列表)并将其应用于原始文件,生成修补版本 [ ] pkgconf //有助于为开发框架配置编译器和链接器标志的程序 [ ] sed //非交互式命令行文本编辑器 [ ] subversion //代码版本控制软件 [ ] tree //递归显示目录列表的命令2.6.5 Filesystem and flash utilities123456789101112131415161718192021222324252627282930313233343536373839404142[ ] abootimg //直接通过文件映像或/dev块设备操作Android Boot Images的工具[ ] aufs-util //aufs文件系统工具[ ] autofs //自动挂载/卸载文件系统的守护进程[ ] btrfs-progs //Btrfs文件系统工具[ ] cifs-utils //CIFS文件系统工具[ ] cpio //用于创建和提取的cpio存档的工具[ ] cramfs //用于生成和检查cramfs文件系统的工具[ ] curlftpfs (FUSE) //基于FUSE和libcurl访问FTP主机的文件系统[ ] davfs2 //一个Linux文件系统驱动程序,允许挂载WebDAV资源,远程协作创作Web资源[ ] dosfstools //用于创建和检查DOS FAT文件系统的工具[*] e2fsprogs ---> //Ext2(及Ext3/4)文件系统工具集,包含了创建、修复、配置、调试等工具 [ ] debugfs //ext2/ext3/ext4文件系统调试工具(不仅限于下列几个工具) [ ] e2image //保存关键的ext2/ext3ext4文件系统的元数据到文件中 [ ] e4defrag //用于ext4文件系统的在线碎片整理程序 [*] fsck //检查并修复特定Linux文件系统 [ ] fuse2fs //用于ext2/ext3/ext4文件系统的FUSE文件系统客户端 [ ] resize2fs //用于ext2/ext3/ext4文件系统容量调整[ ] e2tools //用于读取、写入、操作ext2/ext3中的文件,使用ext2fs库访问文件系统[ ] ecryptfs-utils //适用于Linux的POSIX兼容企业加密文件系统[ ] exFAT (FUSE) //作为FUSE模块,GNU/Linux和其他类Unix系统的全功能exFAT文件系统[ ] exfat-utils //exFAT文件系统工具[ ] f2fs-tools //用于Flash-Friendly File System(F2FS)的工具[ ] flashbench //用于识别SD卡和存储媒介属性的工具[ ] fscryptctl //处理原始密钥并管理Linux文件系统加密策略的工具[ ] fwup //可编写脚本的嵌入式Linux固件更新创建、运行工具[ ] genext2fs //作为普通(非root)用户生成ext2文件系统[ ] genpart //生成由命令行参数定义的16字节分区表条目,并将其转储到stdout[ ] genromfs //生成ROMFS文件系统的工具[ ] imx-usb-loader //通过USB在Freescale i.MX5/i.MX6和Vybrid SoC上下载和运行程序的工具[ ] mmc-utils //MMC工具[ ] mtd, jffs2 and ubi/ubifs tools //构建mtd、jffs2和ubi/ubifs工具[ ] mtools //用于从Unix访问MS-DOS磁盘而不安装它们[ ] nfs-utils //NFS服务工具[ ] nilfs-utils //用于创建和管理NILFS2文件系统的工具[ ] ntfs-3g //开源免费的读/写NTFS驱动程序,可以处理Windows的NTFS文件系统[ ] sp-oops-extract //一个从MTD中提取OOPS/panic异常日志的工具[ ] squashfs //生成SquashFS文件系统的工具[ ] sshfs (FUSE) //基于SSH文件传输协议的FUSE文件系统客户端[ ] sunxi-tools //用于全志Allwinner A10(又名sun4i)和A13(又名sun5i)设备的工具[ ] udftools //用于创建UDF文件系统的工具[ ] unionfs (FUSE) //一个用户空间unionfs的实现[ ] xfsprogs //XFS文件系统工具和库2.6.6 Fonts, cursors, icons, sounds and themes123456789101112131415161718 *** Cursors *** //光标 [ ] comix-cursors //X11鼠标主题里一个略卡通的鼠标光标 [ ] obsidian-cursors //一个明亮、干净的鼠标光标集合 *** Fonts *** //字体 [ ] Bitstream Vera //Bitstream Vera字体系列 [ ] cantarell //一款当代人文主义无衬线字体,专为屏幕阅读而设计 [ ] DejaVu fonts //基于Vera字体的字体系列,提供更广泛的用途 [ ] font-awesome //是一套605个象形图标,可在网站上轻松扩展矢量图形 [ ] ghostscript-fonts //随Ghostscript(PDF软件)一起分发的字体,目前包括35种的gostScript字体 [ ] inconsolata //一种等宽字体,专为代码、清单等而设计 [ ] Liberation (Free fonts) //旨在替代Microsoft三种最常用字体:Times New Roman、Arial和Courier New *** Icons *** //图标 [ ] google-material-design-icons //Google根据材料设计语言(Material Design)设计的官方图标集 [ ] hicolor icon theme //备用图标主题,用于显示图标主题中不可用的图标 *** Sounds *** //声音 [ ] sound-theme-borealis //北极星(borealis)的声音主题 [ ] sound-theme-freedesktop //默认桌面(freedesktop)的声音主题 *** Themes *** //主题2.6.7 Games123456789101112[ ] chocolate-doom //一个复古游戏[ ] flare-engine //Flare(Free Libre Action Roleplaying Engine)是一款简单的游戏引擎[ ] gnuchess //一个西洋棋游戏[ ] LBreakout2 //一款以Arkanoid形式出现的突破式街机游戏[ ] LTris //LTris是使用SDL的俄罗斯方块克隆 *** minetest needs X11 and an OpenGL provider *** //一个开源体像素游戏,需要X11和OpenGL支持[ ] OpenTyrian //是DOS射击游戏Tyrian的一个端口[ ] prboom //一个Doom客户端,用于支持在较新的硬件上玩旧游戏[ ] sl /终端/输入"sl"时,终端出现蒸汽火车穿过,一个玩笑命令 *** solarus needs OpenGL and a toolchain w/ C++, //larus需要OpenGL和一个带C++的工具链,gcc> = 4.8,NPTL,动态库 gcc >= 4.8, NPTL, dynamic library *** //一款动作角色扮演游戏(ARPG)引擎[ ] stella //一款多平台Atari 2600 VCS仿真器2.6.8 Graphic libraries and applications (graphic/text)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 *** Graphic applications *** //***图形应用***[ ] fswebcam //一个从V4L2获取图像的简洁的网络摄像头应用程序[ ] ghostscript //文件通过它到打印机打印出来[ ] glmark2 //glmark2,一个GPU压力测试软件[ ] gnuplot //使用命令列界面,绘制数学函数图形、统计图表等等[ ] jhead //用于操作一些数码相机使用的Exif jpeg标题中的设置和缩略图的程序[ ] libva-utils //是VA-API(视频加速API)测试的集合[ ] netsurf //一个紧凑的图形Web浏览器,旨在支持HTML5,CSS和JavaScript[ ] pngquant //有损PNG压缩器,包含pngquant命令和libimagequant库[ ] rrdtool //用于时间序列数据的高性能数据记录和图形系统[ ] tesseract-ocr ---- //一个支持多种语言的OCR(光学字符识别)引擎,它可以直接使用或提供API​​ *** Graphic libraries *** //***图形库***[ ] cegui06 //Crazy Eddie的GUI系统是一个免费的库,为图形API/引擎提供窗口和小部件[ ] directfb //DirectFB是在Linux帧缓冲区(fbdev)抽象层之上实现的一组图形API[ ] efl //Enlightenment Foundation Libraries,一个开源UI工具包[ ] fbdump (Framebuffer Capture Tool) //一个从Linux内核帧缓冲设备捕获快照并将其作为PPM文件写出的简单工具[ ] fbgrab //一个帧缓冲截图程序,捕获Linux frambuffer并将其转换为png图片[ ] fbset //用于显示或更改帧缓冲设备的设置[ ] fb-test-app //Linux framebuffer的测试套件[ ] fbterm //用于Linux的快速终端仿真器,带有帧缓冲设备或VESA视频卡[ ] fbv //一个帧缓冲控制台图形文件查看器,能够显示GIF,JPEG,PNG和BMP文件[ ] freerdp //是远程桌面协议(RDP)的免费实现[ ] imagemagick //一个用于创建,编辑和组合位图图像的软件套件[ ] linux-fusion communication layer for DirectFB multi //DirectFB通信层允许多个DirectFB应用程序同时运行[ ] mesa3d ---- //OpenGL规范的开源实现[ ] ocrad //一个基于特征提取方法的OCR(光学字符识别)程序[ ] psplash //用于实现开机动画、开机进度条[ ] SDL //一个库,允许程序对视频帧缓冲、音频输出、鼠标和键盘进行低级访问[ ] sdl2 //DirectMedia的第2层,与SDL不兼容 *** Other GUIs *** //***其它GUI***[*] Qt5 ---> //QT5框架 Qt5 version (Latest (5.11)) ---> //选择QT5版本 [ ] qt53d module //QT53d模块 -*- qt5base //qt5base模块,包含基本的Qt库:QtCore、QtNetwork、QtGui、QtWidgets等 () Custom configuration options //自定义QT5编译选项 () Config file //指定类似src/corelib/global/qconfig-*.h文件来启用/禁用的功能 [ ] Compile and install examples (with code) //编译并安装示例(含代码) [ ] concurrent module //启用Qt5Concurrent库 [ ] MySQL Plugin //构建MySQL插件 [ ] PostgreSQL Plugin //构建PostgreSQL插件 SQLite 3 support (No sqlite support) ---> //启用SQLite3支持(不支持sqlite) [ ] gui module //启用Qt5Gui库 [ ] DBus module //启用D-Bus模块 [ ] Enable ICU support //启用Qt5中的ICU支持,例如Qt5Webkit需要此功能 [ ] Enable Tslib support //启用Tslib插件 [ ] qt5canvas3d //Qt Canvas 3D模块提供一种从Qt Quick JavaScript进行类似于WebGL的3D绘图调用的方法 [ ] qt5charts //Qt图表模块提供了一组易于使用的图表组件 [ ] qt5connectivity //Qt Connectivity模块提供对Bluetooth/NFC外围设备的支持 [ ] qt5declarative //Qt Declarative模块提供了Qt QML和Qt Quick模块,用于使用QML语言开发UI [ ] qt5enginio //Enginio是一种后端即服务解决方案,用于简化连接的和数据驱动的应用程序的后端开发 [ ] qt5graphicaleffects //Qt Graphical Effects模块提供了一组QML类型,用于向用户界面添加视觉特效 [ ] qt5imageformats //Qt Image Formats模块提供了用于其他图像格式的插件:TIFF、MNG、TGA、WBMP [ ] qt5location //Qt Location API使用一些流行的定位服务提供的数据来创建可行的地图解决方案 [ ] qt5multimedia //Qt Multimedia模块,实现媒体播放以及使用摄像头和无线电设备 [ ] qt5quickcontrols //Qt Quick Controls模块提供了一组控件,可用于在Qt Quick中构建完整的界面 [ ] qt5quickcontrols2 //对应Qt Quick Controls 2模块 [ ] qt5script //Qt脚本支持使Qt应用程序可编写脚本,逐渐弃用,在新设计中由Qt QML模块替换 [ ] qt5scxml //Qt SCXML模块提供了从SCXML文件创建状态机的功能 [ ] qt5sensors //Qt Sensors API通过QML和C++接口提供对传感器硬件的访问 [ ] qt5serialbus //对应qt5serialbus模块 [ ] qt5serialport //Qt串行端口提供配置串行端口,I/O操作,获取和设置RS-232引脚排列的控制信号 [ ] qt5svg //Qt SVG提供了用于在小部件和其他绘画设备上渲染和显示SVG图纸的类 [ ] qt5tools //Qt Tools提供的工具可促进应用程序的开发和设计 [ ] qt5virtualkeyboard //Qt虚拟键盘是一个虚拟键盘框架,由C++后端和QML实现的UI前端组成 [ ] qt5wayland //对应qt5wayland模块 [ ] qt5webchannel //支持在服务器(QML/C++应用程序)和客户端(HTML/JavaScript或QML应用程序)之间进行对等通信 [ ] qt5webkit //提供WebView API,用于QML应用程序呈现动态Web内容,后继QtWebEngine需要OpenGL支持 [ ] qt5webengine //提供用于渲染HTML,XHTML和SVG文档的C++类和QML类型 [ ] qt5websockets //提供C++和QML接口,使Qt应用程序可以充当可处理WebSocket请求的服务器,也可充当的客户端 [ ] qt5xmlpatterns //Qt XML Patterns模块提供对XPath,XQuery,XSLT和XML Schema验证的支持 [ ] KF5 ---- //KF5是一组Qt框架插件,扩展了Qt *** QT libraries and helper libraries *** //***QT库和帮助程序库*** [ ] cutelyst //一个基于Qt的C++ Web框架,它使用Catalyst(Perl)框架的简单实现 [ ] grantlee //Django模板框架的Qt实现 [ ] qextserialport //一个Qt库来管理串行端口 [ ] qjson //QJson是基于Qt的库,可将JSON数据映射到QVariant对象,反之亦然 [ ] quazip //QuaZIP是Gilles Vollant的ZIP/UNZIP软件包的简单C++包装,可用于访问ZIP档案,它使用Qt工具箱 [ ] qwt //Qwt是Qt GUI应用程序框架的图形扩展,它提供了2D绘图小部件等[ ] tekui //一个轻量、独立、可移植的GUI工具包, 用lua和C开发[ ] weston //是Wayland服务器的参考实现[ ] X.org X Window System ---- //支持X11R7的库、服务器、驱动程序和应用程序[ ] midori //一个轻量级浏览器[ ] vte //Virtual Terminal Emulator,一个虚拟终端模拟器小部件[ ] xkeyboard-config //X的键盘配置数据库2.6.9 Hardware handling123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152Firmware ---> //固件 [ ] am33x-cm3 //Cortex-M3二进制文件用于在am335x上挂起和恢复 [ ] armbian-firmware //特定用于Armbian的固件 [ ] b43-firmware //b43内核驱动程序支持的Broadcom Wifi设备的固件 [ ] linux-firmware //为LAN,WLAN卡等设备提供了各种二进制固件文件 [ ] rpi-bt-firmware //Raspberry Pi 3和Zero W Broadcom BCM43438蓝牙模块固件 [ ] rpi-firmware //Raspberry Pi引导程序和GPU固件的预编译二进制文件 [ ] rpi-wifi-firmware //Raspberry Pi 3和Zero W Broadcom BCM43430 wifi模块NVRAM数据 [ ] sunxi script.bin board file //专用于linux-sunxi内核的一个已编译的.fex文件来进行硬件描述 [ ] ts4900-fpga //TS-4900的FPGA实现了clocks、UART MUX、GPIO [ ] ux500-firmware //为Azurewave AW-NH580组合模块(wifi、bt、gps)提供了各种二进制文件 [ ] wilc1000-firmware //Atmel Wilc1000无线设备的固件 [ ] wilink-bt-firmware //TI的Wilink7和Wilink8(wl12xx/wl18xx)UART连接的蓝牙固件 [ ] zd1211-firmware //ZyDAS ZD1211/Atheros AR5007UG wifi设备的固件[ ] a10disp //用于改变运行linux-sunxi内核的Allwinner ARM SOCs显示模式的程序[ ] acpica //提供独立于操作系统外的高级配置和电源接口规范(ACPI)的参考实现[ ] acpitool //一个小型、方便的命令行ACPI客户端,具有许多适用于Linux的功能[ ] aer-inject //允许注入软件层面PCIE AER错误到正在运行的Linux内核[ ] am335x-pru-package //TI AM335X PRU程序加载器[ ] avrdude //avrdude是一个多平台的avr系列MCU的下载器[ ] bcache tools //Bcache是​​Linux内核块层缓存,将快速的SSD充当慢速的HDD缓存[ ] brltty //一个守护程序,为盲人提供对Linux控制台的访问[ ] cbootimage //编译BCT(启动配置表)映像,将其放入Tegra的设备的启动闪存中[ ] cc-tool //为Linux OS的Texas Instruments CC调试器提供支持[ ] cdrkit //用于读取CD和DVD,清空CD-RW介质,创建ISO-9660文件系统映像等[ ] cryptsetup //此工具有助于操纵dm-crypt和luks分区以进行磁盘加密[ ] cwiid //用C语言编写的用于与Nintendo Wiimote接口的Linux工具[ ] dhadi-linux //用于将Asterisk与电话硬件接口的开源设备驱动程序框架[ ] dahdi-tools //用于管理和监视DAHDI设备的程序包-*- dbus //D-Bus消息总线系统[ ] dbus-c++ //为D-Bus提供C ++ API[ ] dbus-glib //D-Bus的GLib绑定[ ] dbus-triggerd //在收到给定的dbus信号后触发shell命令的工具[*] devmem2 //读/写内存的任何位置数据[ ] dfu-util //用于将固件下载和上传到通过USB连接的设备[ ] dmraid //利用Linux内核的Device Mapper机制的磁盘阵列(RAID)[ ] dt-utils //设备树转储和barebox操作的工具[ ] dtv-scan-tables //数字电视扫描表[ ] dump1090 //Dump1090是用于RTLSDR设备的简单模式S解码器[ ] dvb-apps //安装少量的DVB测试和实用程序,包括szap和dvbscan[ ] dvbsnoop //分析、查看、调试传输流(TS)、程序基本流(PES)、程序流(PS)[ ] edid-decode //以人类可读的格式解码EDID数据-*- eudev //eudev是systemd-udev的一个分支[*] enable rules generator //启用持久性规则生成[*] enable hwdb installation //启用将硬件数据库安装到/etc/udev/hwdb.d[ ] evemu //evemu记录并重放设备描述和事件[ ] evtest //input输入子系统测试工具[ ] fan-ctrl //一个守护程序,控制CPU风扇的速度[ ] fconfig //从Linux获取/设置RedBoot配置参数[ ] fis //从Linux操纵RedBoot分区表[ ] flashrom //用于识别/读取/写入/验证和擦除闪存芯片的程序[ ] fmtools //用于功率控制、调谐、音量控制、电台扫描的的fm[ ] Freescale i.MX libraries ---- //为Freescale i.MX平台提供GPU或VPU提供硬件加速和一些硬件工具[ ] fxload //一个USB自动下载工具[ ] gadgetfs-test //usb gadgetfs测试程序[ ] gpm //为虚拟控制台提供鼠标进行复制和粘贴操作[ ] gpsd ---- //监视串口或USB,获取GPS或AIS模块数据,并可通过TCP端口查询[ ] gptfdisk //GPT fdisk(由gdisk和sgdisk程序组成)是一种文本模式分区工具[ ] gvfs //一个用户空间虚拟文件系统,可通过SFTP、SMB等访问远程数据[ ] hdparm //获取/设置Linux IDE驱动器的硬盘参数[ ] hwdata //获取各种硬件标识和配置数据[ ] hwloc //获取系统中层次化的关键计算元素,比如:处理器内核,线程[ ] i2c-tools //用于Linux的各种I2C工具集,比如总线探测、寄存器访问[ ] input-event-daemon //对输入事件(例如按键,鼠标按钮和开关)执行用户定义的命令[ ] iostat //I/O性能监视实用程序[ ] ipmitool //为启用IPMI的设备提供了简单的命令行界面[ ] irda-utils //用于控制IrDA栈用户空间程序[ ] kbd //键表文件和键盘实用程序[ ] lcdproc //LCD显示驱动程序守护程序和客户端[ ] libuio //用于处理UIO(用户空间I/O)设备发现和绑定任务[ ] libump //ARM通用内存提供程序用户空间库,Mali驱动程序所必需的[ ] linuxconsoletools //将老式串行设备连接到Linux内核输入层的inputattach程序[ ] linux-backports //许多来自最新内核的Linux驱动程序,反向移植到较旧的内核[ ] lirc-tools //接收和发送最常见的IR遥控器的IR信号[ ] lm-sensors //Linux的硬件运行状况监视软件包(温度、电压、风扇速度等)[ ] lshw //Hardware Lister,用于提供有关机器硬件配置的详细信息的工具[ ] lsscsi //列出SCSI设备(或主机)及其属性[ ] lsuio //列出可用的用户空间I/O(UIO)设备[ ] luksmeta //用于将元数据存储在LUKSv1标头中[ ] lvm2 & device mapper //LVM2(Logical Volume Manager2)是Linux逻辑卷管理器的重写[*] mali-t76x //为ARM Mali Midgard T76X GPU安装二进制用户空间组件[ ] mdadm //用于管理Linux软件RAID阵列的程序[ ] memtester //用于测试内存子系统是否有故障[ ] memtool //用于修改存储器映射的寄存器(/dev/mem)或字符设备(/dev/fb0)[ ] minicom //一个有菜单界面的串口通信工具[ ] nanocom //基于microcom的Linux和POSIX系统的轻量级串行终端[ ] neard //Near Field Communication,NFC管理[ ] nvme //与标准NVM Express(优化的PCI Express SSD接口)设备的交互程序[ ] odroid-mali //为基于odroidc2的系统安装ARM Mali驱动程序[ ] odroid-scripts //为基于odroidc2的系统安装脚本[ ] ofono //用于移动电话(GSM/UMTS)开源程序,使用D-Bus API,3GPP标准[ ] open2300 //从Lacrosse WS2300/WS2305/WS2310/WS2315气象站读写数据[ ] openipmi //允许对设备进行远程监视和远程管理[ ] openocd //Open On-Chip Debugger,开源片上调试器 *** owl-linux is only supported //用于H&D无线SPB104 SD-card WiFi SIP的Linux内核驱动程序 on ARM9 architecture *** [ ] parted //磁盘分区和分区大小调整工具[ ] pciutils //处理PCI总线的各种程序,提供诸如setpci和lspci之类的东西[ ] pdbg //PowerPC FSI调试器,通过FSI对IBM Power8/9 CPU进行低级调试[ ] picocom //一个极简的串口调试工具[ ] pifmrds //使用Raspberry Pi的PWM的FM-RDS发送器[ ] pigpio //用于控制Raspberry Pi通用输入输出(GPIO)的库[ ] powertop //诊断功耗和电源管理问题的工具[ ] pps-tools //每秒脉冲(Pulse per second )工具,提供timepps.h和其它PPS程序[ ] pru-software-support //从TI的PRU软件支持包中提取的PRU固件示例[ ] read-edid //一对用于从监视器读取EDID的工具[ ] rng-tools //使用硬件随机数生成器(random number generators)的守护程序[ ] rpi-userland //包含Raspberry Pi使用VideoCore驱动程序所需的库[ ] rs485conf //使用的命令行选项显示和修改TTY设备的RS485配置参数[ ] rtc-tools //用于操纵实时时钟设备[ ] rtl8188eu //RTL8188EU USB Wi-Fi适配器的独立驱动程序[ ] rtl8723bs //无线网卡rtl8723bs驱动程序[ ] rtl8723bu //无线网卡rtl8723bu驱动程序[ ] rtl8821au //无线网卡rtl8821au驱动程序[ ] rtl8189fs //无线网卡rtl8189fs驱动程序[ ] sane-backends //Scanner Access Now Easy,轻松访问扫描仪[ ] sdparm //访问SCSI设备参数的程序[ ] setserial //串口配置[ ] sg3-utils //使用SCSI命令集的设备的程序[ ] sigrok-cli //Sigrok-cli是sigrok软件套件的命令行前端[ ] sispmctl //在Linux下使用GEMBIRD SiS-PM和mSiS(sispm)USB控制的电源插座设备[ ] smartmontools //使用S.M.A.R.T.控制和监视存储系统[ ] smstools3 //一个SMS网关软件,可以通过GSM调制解调器和手机发送和接收短消息[ ] spi-tools //包含一些简单的命令行工具,以帮助使用Linux spidev设备[ ] sredird //一个串行端口重定向器,可以通过网络共享一个串行端口[ ] statserial //显示标准9针或25针串行端口上的信号表,并指示握手线的状态[ ] stm32flash //通过UART或I2C为STM32 ARM微控制器提供的开源flash程序[ ] sunxi-cedarx //CedarX是Allwinner的多媒体协处理技术,用于硬件加速视频和图像解码[ ] sunxi-mali //为基于sunxi的系统(ARM Allwinner SoC的系统)安装ARM Mali驱动程序[ ] sysstat //Linux的性能监视工具集合(sar、sadf、mpstat、iostat、pidstat、sa)[ ] targetcli-fb //一个命令行界面,用于配置3.x Linux内核版本中的LIO通用SCSI目标[ ] ti-gfx //使用SGX加速的TI开发板的图形库,支持AM335x、AM43xx等[ ] ti-sgx-km //带有SGX GPU的TI CPU的内核模块 *** ti-sgx-um needs the ti-sgx-km driver *** //带有SGX5xx GPU的TI CPU的图形库,支持AM335x,AM437x等[ ] ti-uim //TI wl12xx连接芯片的用户模式初始化管理器共享传输驱动程序[ ] ti-utils //基于wl12xx驱动程序的TI无线解决方案的校准器和其它程序[ ] triggerhappy //一个热键守护程序[ ] u-boot tools //U-Boot引导程序的配套工具[ ] ubus //IPC/RPC总线,允许进程之间进行通信,由ubusd、libubus、ubus组成[ ] uccp420wlan //基于SoftMAC的Imagination Explorer RPU uccp420的WiFi驱动程序[ ] udisks //提供了一个守护程序、D-Bus API及命令行工具,以管理磁盘/存储设备[ ] uhubctl //在USB集线器上控制每个端口的USB电源[ ] upower //用于枚举功率设备,侦听设备事件以及查询历史记录和统计信息[ ] usb_modeswitch //一种模式切换工具,用于控制具有“多种模式”的USB设备[ ] usb_modeswitch_data //包含udev规则和事件,以允许usb_modeswitch自动运行[ ] usbmount //在插入USB大容量存储设备后会自动挂载,拔掉后自动卸载[ ] usbutils //USB枚举程序[ ] w_scan //用于对DVB和ATSC传输执行频率扫描[ ] wf111 //Silicon Labs WF111 WiFi驱动程序和实用程序[ ] wipe //用于从磁介质安全擦除文件的命令[ ] xorriso //可创建、加载、处理和写入具有Rock Ridge扩展名的ISO 9660系统映像[ ] xr819-xradio //SDIO WiFi芯片XR819的无线驱动程序2.6.10 Interpreter languages and scripting123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343[ ] 4th //Forth编译器,可将Forth语言转成其他语言的字节码和独立可运行程序[ ] enscript //将ASCII文件转换为PostScript,HTML或RTF,生成文件或打印[ ] erlang //Erlang是一种编程语言,主要用于开发并发和分布式系统[ ] execline //execline是一种(非交互式)脚本语言,类似sh,但语法有很大不同[ ] ficl //Ficl是一种编程语言解释器,将命令/宏/开发原型语言嵌入到其他系统中[ ] gauche //Gauche是R7RS计划的实现,作为方便的脚本解释器被开发[ ] guile //Guile是Scheme编程语言的解释器和编译器,该语言类似Lisp[ ] haserl //Haserl是一个小的cgi包装器,使程序脚本可以嵌入到html文档中[ ] jamvm //JamVM是新的Java虚拟机,符合JVM规范版本2[ ] jimtcl //Jim Tcl是Tcl脚本语言的一种小型实现[ ] lua //Lua是一种功能强大,快速,轻巧,可嵌入的脚本语言[ ] luajit //LuaJIT实现了Lua 5.1定义的全部语言功能[ ] micropython //Micro Python是Python 3编程语言的精简和快速实现[ ] moarvm //专门为Rakudo Perl 6和NQP编译器工具链构建的虚拟机[ ] mono //C#和与Microsoft.NET二进制兼容的CLR的开源、跨平台实现[ ] nodejs //基于V8的事件驱动的I/O服务器端JavaScript环境[ ] perl //Practical Extraction and Report Language,实用报表提取语言[*] php //PHP是一种广泛使用的通用脚本语言,特别适合于Web开发[*] CGI interface //Common Gateway Interface,通用网关接口[*] CLI interface //Command Line Interface,命令行接口[*] FPM interface //FastCGI Process Manager,FastCGI流程管理器 Extensions ---> //php扩展 [ ] Calendar //日历和活动支持 [ ] Fileinfo //文件信息支持 [ ] OPcache //启用Zend OPcache加速器 [*] Readline //行读取支持 [*] Session //会话支持 *** Compression extensions *** //***压缩扩展* [*] bzip2 //bzip2格式读/写支持 [ ] phar //PHP存档支持 [ ] zip //zip格式读/写支持 [*] zlib //zlib支持 *** Cryptography extensions *** //**密码扩展** [ ] hash //Hash加密算法 [ ] mcrypt //mcrypt加密扩展库支持 [*] openssl //Open Secure Sockets Layer开源安全套接层协议 *** Database extensions *** //**数据库扩展** [ ] DBA //Database Abstraction数据库抽象层 [ ] Mysqli //MySQL改进的扩展支持 [ ] SQLite3 //SQLite3支持 [ ] PDO //PHP数据对象支持 *** Human language and character //**人类语言和字符编码支持** encoding support *** [ ] Gettext //文本获取支持 [ ] iconv //iconv字符集转换支持 [ ] intl //国际化支持 [ ] mbstring //多字节字符串支持 *** Image processing *** //**图像处理** [ ] EXIF //记录数码照片的属性信息和拍摄数据 [ ] GD //GD库,用于图像处理,制作验证码、缩略图、水印图等 *** Mathematical extensions *** //**数学扩展** [ ] BC math //BCMath任意精度数学支持 [ ] GMP //GNU多精度支持 *** Other basic extensions *** //**其它基本扩展** [*] JSON //JavaScript对象序列化支持 [ ] Tokenizer //令牌生成器功能支持 *** Other services *** //**其它服务** [ ] cURL //URL流的cURL [ ] FTP //FTP支持 [ ] SNMP //SNMP支持 [ ] sockets //Sockets支持 *** Process Control *** //**过程控制** [ ] PCNTL //Process control,过程控制支持 [*] Posix //POSIX.1(IEEE 1003.1)功能支持 [ ] shmop //共享内存支持 [ ] sysvmsg //System V消息队列支持 [ ] sysvsem //System V信号灯支持 [ ] sysvshm //System V共享内存支持 *** Variable and Type related *** //**变量和类型相关** [ ] Ctype //字符类型检查支持 [ ] Filter //输入过滤支持 *** Web services *** //**网页服务** [ ] SOAP //SOAP支持 [ ] XML-RPC //XML-RPC支持 *** XML manipulation *** //**XML操作** [ ] DOM //文档对象模型支持 [ ] libxml //libxml2支持 [ ] SimpleXML //SimpleXML支持 [ ] WDDX //WDDX支持 [ ] XML Parser //XML解析支持 [ ] XMLReader //XML读支持 [ ] XMLWriter //XML写支持 [ ] XSL //XSL转换支持 External php extensions ---> //外部php扩展 [ ] php-amqp //与任何符合AMQP的服务器通信 [ ] php-geoip //基于PHP GeoIP的IP地址映射到地理位置 [ ] php-gnupg //PHP扩展的gpgme库,开源的非对称信息加密系统 [ ] php-imagick //PHP扩展的ImageMagick库,用于读、写和处理主流图片文件 [ ] php-memcached //用于通过libmemcached库与memcached接口 [ ] php-ssh2 //libssh2库的PHP绑定 [ ] php-yaml //PHP YAML-1.1解析和生成 [ ] php-zmq //PHP的ZeroMQ消息传递绑定-*- python //python相关 python module format to install (.pyc compiled sources only) ---> //python模块安装格式(.pyc仅编译源) core python modules ---> //核心python模块 *** The following modules are unusual or require extra libraries *** //**以下模块特殊或需要额外的库** [ ] bzip2 module //适用于Python的bzip2模块 [ ] bsddb module //适用于Python的bsddb模块 [ ] codecscjk module //适用于Python的中文/日文/韩文编解码器模块 [ ] curses module //Python的curses模块 [ ] ossaudiodev module //适用于Python的ossaudiodev模块 [ ] readline //Python的readline模块(在Python Shell中进行命令行编辑时需要) [ ] ssl //适用于Python的_ssl模块(urllib等中的https必需) [*] unicodedata module //Unicode字符数据库(由stringprep模块使用) Python unicode database format //Python unicode数据库格式(通用字符集2字节UCS2) (Universal Character Set 2-byte (UCS2)) ---> [ ] sqlite module //SQLite数据库支持 [ ] xml module //Python的pyexpat和xml库 [ ] zlib module //Python中的zlib支持 [ ] hashlib module //Python中的hashlib支持 External python modules ---> //外部python扩展 [ ] python-alsaaudio //包含ALSA声卡的API [ ] python-argh //Argh是argparse的智能包装器,argparse是一个命令行参数解析模块 [ ] python-arrow //更适用Python的日期和时间 [ ] python-asn1crypto //用于解析和序列化ASN.1结构 [ ] python-attrs //摆脱实现对象协议的繁琐工作,感受编写类的乐趣 [ ] python-autobahn //WebSocket客户端Hhh服务器库,WAMP实时框架 [ ] python-automat //用于Python有限状态机(特别是确定性有限状态机)表达 [ ] python-babel //一系列国际化Python应用程序的工具 [ ] python-backports-abc //对“collections.abc”模块的最新添加的反向移植 [ ] python-backports-shutil- //get_terminal_size函数的反向移植 get-terminal-size [ ] python-bcrypt //跨平台文件加密工具 [ ] python-beautifulsoup4 //用于从HTML和XML文件中提取数据 [ ] python-bitstring //二进制数据的简单构造,分析和修改 [ ] python-bottle //快速,简单且轻量级的WSGI微型Web框架 [ ] python-can //为Python提供控制器区域网络支持 [ ] python-cbor //RFC 7049-简洁的二进制对象表示 [ ] python-certifi //用于提供Mozilla的CA Bundle的Python软件包 [ ] python-cffi //Python调用C代码的外函数接口 [ ] python-characteristic //没有样板的Python属性 [ ] python-chardet //适用于Python 2和3的通用编码检测器 [ ] python-cheetah //一个开源模板引擎和代码生成工具 [ ] python-cheroot //Cheroot是源自CherryPy的纯Python的高性能HTTP服务器 [ ] python-cherrypy //简约的Web框架 [ ] python-click //提供功能强大的命令行实用程序 [ ] python-coherence //用于数字生活的DLNA/UPnP媒体服务器和框架 [ ] python-configobj //一个简单但功能强大的配置文件(ini格式)读/写软件 [ ] python-configshell-fb //提供了一个框架来构建基于CLI的应用程序 [ ] python-constantly //提供符号常量支持的库 [ ] python-couchdb //用于CouchDB的Python客户端库 [ ] python-crc16 //用于CRC16校验的库 [ ] python-crcmod //用于生成计算循环冗余校验(CRC)的对象 [ ] python-crossbar //一个开源的WAMP应用路由器 [ ] python-cryptography //一个旨在向Python开发人员公开密码基元和配方的软件包 [ ] python-cssselect //解析CSS3选择器并将其转换为XPath 1.0 [ ] python-cssutils //用于Python的CSS级联样式表库 [ ] python-daemon //生成规范的Unix守护进程 [ ] python-dataproperty //用于从数据提取属性的Python库 [ ] python-dateutil //标准Python日期时间模块的扩展 [ ] python-decorator //实现装饰器更好地使用Python [ ] python-dialog //UNIX对话框程序和大多数兼容程序的Python接口 [ ] python-dicttoxml //将Python字典或其它本机数据类型转换为有效的XML字符串 [ ] python-django //一个高级Python Web框架 [ ] python-docopt //轻松创建漂亮的命令行界面 [ ] python-docutils //用于将文档处理为有用的格式,比如HTML、XML、LaTeX [ ] python-dominate //用于使用DOM API创建和处理HTML文档 [ ] python-dpkt //快速、简单的数据包创建/解析,带有基本TCP/IP协议的定义 [ ] python-ecdsa //ECDSA加密签名库 [ ] python-engineio //Engine.IO服务器 [ ] python-enum //Python中强大的枚举类型 [ ] python-enum34 //Python 3.4枚举反向移植到2.x [ ] python-flask //Flask是基于Werkzeug,Jinja 2的Python微框架 [ ] python-flask-cors //Flask扩展添加了一个装饰器以支持CORS [ ] python-flask-babel //Flask-Babel是Flask的扩展 [ ] python-flask-jsonrpc //支持Flask网站的基本JSON-RPC实现 [ ] python-flask-login //Flask-Login提供Flask的用户会话管理 [ ] python-flup //提供适用于Python的WSGI模块集合 [ ] python-futures //从Python 3.2反向移植concurrent.futures包 [ ] python-gobject //GLib/GObject库的Python绑定 [ ] python-gunicorn //用于UNIX的Python WSGI HTTP服务器 [ ] python-h2 //基于HTTP/2状态机的协议实现 [ ] python-hpack //Python HPACK标头压缩 [ ] python-html5lib //基于WHATWG HTML规范的HTML解析器 [ ] python-httplib2 //一个全面的HTTP客户端库 [ ] python-humanize //将数据转化为对应方便人类阅读的库 [ ] python-hyperframe //适用于Python的HTTP/2框架层 [ ] python-hyperlink //Python功能齐全,准确的URL [ ] python-ibmiotf //适用于IBM Watson IoT Platform的Python客户端 [ ] python-id3 //通过界面读取和操作MP3文件的ID3信息标签 [ ] python-idna //指定的程序中国际化域名(IDNA)协议的库 [ ] python-incremental //用于对Python项目进行版本控制的库 [ ] python-iniparse //适用于Python的INI解析器,与标准库的ConfigParser API兼容 [ ] python-iowait //与平台无关的模块,用于I / O完成事件 [ ] python-ipaddr //Python中的IPv4/IPv6操作库 [ ] python-ipaddress //适用于旧版Python的Python 3.3的IP地址 [ ] python-ipy //用于处理IPv4和IPv6地址和网络的类和工具 [ ] python-ipython //用于多种编程语言的交互式计算的命令外壳 [ ] python-ipython-genutils //IPython残余实用程序 [ ] python-iso8601 //解析ISO 8601日期的简单模块 [ ] python-itsdangerous //可将数据传递到不受信任的环境并安全可靠地恢复数据 [ ] python-jaraco-classes //Python类构造的程序函数 [ ] python-jinja2 //用纯Python编写的模板引擎 [ ] python-jsonschema //适用于Python的JSON模式验证的实现 [ ] python-json-schema-validator //JSON模式验证器 [ ] python-keyring //提供了一种从Python访问系统密钥环服务的简便方法 [ ] python-libconfig //Libconfig是用于处理结构化配置文件的简单库 [ ] python-lmdb //读写LMDB数据库,Lightning Memory-Mapped Database [ ] python-logbook //Python的日志记录替代 [ ] python-lxml //支持HTML和XML的解析,支持XPath解析方式,而且解析效率非常高 [ ] python-m2r //Markdown到reStructuredText转换器 [ ] python-mad //MAD库是一个高质量的MPEG解码器 [ ] python-mako //mako模板,有比Jinja2更快的解析速度和更多的语法支持 [ ] python-markdown //Markdown的Python实现 [ ] python-markdown2 //Markdown的快速,完整的Python实现 [ ] python-markupsafe //为Python实现XML/HTML/XHTML Markup安全字符串 [ ] python-mbstrdecoder //多字节字符串解码器 [ ] python-meld3 //HTML/XML模板系统 [ ] python-mistune //最快的Markdown解析器,具有渲染器功能 [ ] python-more-itertools //除itertools之外,还有更多的可迭代操作例程 [ ] python-msgpack //用于读取和写入MessagePack数据 [ ] python-mutagen //处理音频元数据的Python模块 [ ] python-mwclient //MediaWiki API客户端 [ ] python-mwscrape //将呈现的文章从MediaWiki API下载到CouchDB [ ] python-netaddr //用于Python的网络地址处理库 [ ] python-netifaces //从Python可移植地访问网络接口 [ ] python-nfc //用于近场通信的Python模块 [ ] python-numpy //使用Python进行科学计算的基本软件包 [ ] python-oauthlib //OAuth请求签名逻辑的通用、符合规范的全面实现 [ ] python-paho-mqtt //为客户端类提供了对MQTT v3.1和v3.1.1的支持 [ ] python-pam //Pluggable Authentication Module,可插拔认证模块 [ ] python-paramiko //SSH2协议库 [ ] python-pathlib2 //面向对象的文件系统路径 [ ] python-pathpy //将路径对象实现为一实体,可调用路径对象上对文件操作 [ ] python-pathtools //文件系统通用程序 [ ] python-pathvalidate //用于验证/清除字符串,如filename/variable-name [ ] python-pexpect //允许脚本生成子应用程序并对其进行控制 [ ] python-pickleshare //带有并发支持的微型“搁置式”数据库 [ ] python-pillow //一个很流行的图像处理库 [ ] python-portend //TCP端口监视实用程序 [ ] python-posix-ipc //访问POSIX进程间信号,共享内存和消息队列 [ ] python-priority //HTTP/2优先级树的Python实现 [ ] python-prompt-toolkit //用于在Python中构建功能强大的交互式命令行的库 [ ] python-protobuf //Google协议缓冲区的Python实现 [ ] python-psutil //用于获取Python中正在运行的进程和系统利用率信息 [ ] python-psycopg2 //用来操作postgreSQL数据库的第三方库 [ ] python-ptyprocess //用在伪终端(pty)中启动子流程,并与流程及其pty进行交互 [ ] python-pudb //一个全屏、基于控制台的Python调试器 [ ] python-pyasn //能够非常快速的IP地址查找 [ ] python-pyasn-modules //基于ASN.1的协议模块的集合 [ ] python-pycli //用于在Python中制作简单、准确的命令行应用程序框架 [ ] python-pycparser //Python中的C解析器 [ ] python-pycrypto //PyCrypto是密码算法和协议的集合 [ ] python-pydal //数据库抽象层,使用指定的方式为数据库后端实时动态生成SQL [ ] python-pyelftools //用于解析和分析ELF文件和DWARF调试信息 [ ] python-pyftpdlib //极其快速且可扩展的Python FTP服务器库 [ ] python-pygame //简化使用Python编写游戏等多媒体软件的过程 [ ] python-pygments //Pygments是用Python编写的语法高亮包 [ ] python-pyicu //包装ICU C ++ API的Python扩展 [ ] python-pyinotify //在Linux上使用inotify监视文件系统事件 [ ] python-pylibftdi //包含python语言绑定libftdi [ ] python-pylru //least recently used(LRU)缓存的实现 [ ] python-pymysql //一个纯Python MySQL客户端库,它遵循DB-API 2.0 [ ] python-pynacl //Python绑定到网络和密码学(NaCl)库 [ ] python-pyopenssl //OpenSSL库相关的Python包装器模块 [ ] python-pyparsing //客户端代码使用提供的类库直接在Python代码中构造语法 [ ] python-pyparted //可以编写与磁盘分区表和文件系统交互的应用程序 [ ] python-pypcap //pypcap模块是C libpcap库的面向对象包装 [ ] python-pyqrcode //QR代码生成器,带有SVG,EPS,PNG和终端输出 [ ] python-pyqt5 //Qt 5的Python绑定 [ ] python-pyratemp //用于执行html模板的Python库 [ ] python-pyro //一个Python库,表示PYthon远程对象 [ ] python-pyroute2 //Python Netlink库-Linux网络/netns/无线/ipset配置 [ ] python-pysendfile //用于sendfile(2)系统调用的Python接口 [ ] python-pysmb //Python编写的实验性SMB/CIFS库 [ ] python-pysnmp //SNMP引擎实现 [ ] python-pysnmp-apps //用于SNMP管理的命令行工具集合 [ ] python-pysnmp-mibs //预编译和打包的IETF和IANA MIB,以简化与PySNMP库的使用 [ ] python-pysocks //Python SOCKS客户端模块 [ ] python-pytablereader //用于从文件/URL加载具有各种数据格式的结构化表数据 [ ] python-pytablewriter //用于以各种格式编写表:CSV、HTML、JSON、Excel等 [ ] python-pytrie //trie数据结构的纯Python实现 [ ] python-pytz //世界时区定义 [ ] python-pyudev //Python绑定到libudev(Linux的设备和硬件管理以及信息库) [ ] python-pyusb //从Python访问通用串行总线(USB) [ ] python-pyxb //为与XMLSchema定义的数据结构相对应的类生成Python代码 [ ] python-pyyaml //包含与libyaml API的绑定 [ ] python-pyzmq //用于zeromq的python语言绑定 [ ] python-raven //Raven是Sentry(https://getsentry.com)的客户端 [ ] python-remi //GUI库,将应用程序的界面转换为HTML,以在Web浏览器中呈现 [ ] python-requests //Apache2许可的HTTP库 [ ] python-requests-oauthlib //OAuthlib身份验证对请求的支持 [ ] python-requests-toolbelt //python-requests的高级用户工具 [ ] python-rpi-gpio //用于控制Raspberry Pi上的GPIO [ ] python-rtslib-fb //用于配置LIO通用SCSI目标的基于对象的Python库 [ ] python-scandir //一个更好、更快的目录迭代器 [ ] python-schedule //使用简单、人性化的语法按预定的时间间隔定期运行Python函数 [ ] python-sdnotify //systemd服务通知协议(sd_notify)的纯Python实现 [ ] python-secretstorage //Python与FreeDesktop.org Secret Service API的绑定 [ ] python-see //dir()的人性化替代 [ ] python-serial //用于访问串行端口的Python库 [ ] python-service-identity //pyOpenSSL的服务身份验证 [ ] python-setproctitle //用于自定义流程标题的Python模块 [ ] python-setuptools //下载、构建、安装、升级和卸载Python软件包 [ ] python-sh //Python子进程替换,可以像调用一个程序一样调用任何程序 [ ] python-shutilwhich //Python 3.3的shutil.which函数的复制和粘贴反向移植 [ ] python-simplegeneric //简单的通用函数(类似于Python自己的len()、pickle.dump()等) [ ] python-simplejson //简单、快速、可扩展的JSON编码器/解码器 [ ] python-simplesqlite //用于简化SQLite数据库操作:表创建,数据插入和获取数据等 [ ] python-singledispatch //把整体方案拆分成,多个小的模块 [ ] python-six //提供了一些程序函数,用于消除Python2/3版本之间的差异 [ ] python-smbus-cffi //允许SMBus通过Linux主机上的I2C/dev接口进行访问 [ ] python-socketio //Socket.IO服务器 [ ] python-sortedcontainers //Python排序容器类型:SortedList,SortedDict和SortedSet [ ] python-spidev //用于通过spidev内核驱动程序从用户空间与SPI设备进行接口 [ ] python-systemd //用于本地访问systemd设备的Python模块 [ ] python-tabledata //用于表示pytablewriter/pytablereader/SimpleSQLite的表格数据 [ ] python-tempora //与日期和时间有关的对象和例程 [ ] python-typepy //在运行时用于变量类型检查器/验证器/转换器的Python库 [ ] python-thrift //Apache Thrift RPC系统的Python绑定 [ ] python-tomako //将Mako用作Tornado的模板引擎的最简单方法 [ ] python-toml //一个解析toml编写的包 [ ] python-tornado //一个Python Web框架和异步网络库 [ ] python-traitlets //用于Python应用程序的配置系统 [ ] python-treq //用于在使用Twisted时发出HTTP请求 [ ] python-twisted //一个用Python编写的事件驱动的网络引擎 [ ] python-txaio //asyncio/Twisted/Trollius之间的兼容性API [ ] python-txtorcon //基于Twisted的Tor控制器客户端,具有状态跟踪和配置抽象 [ ] python-u-msgpack //轻量级MessagePack序列化器和反序列化器 [ ] python-ubjson //通用二进制JSON编码器/解码器 [ ] python-ujson //UltraJSON是用纯C语言编写的超快速JSON编码器/解码器 [ ] python-urllib3 //具有线程安全连接池、文件发布支持、健全性等功能的Python HTTP库 [ ] python-urwid //Urwid是Python的控制台用户界面库 [ ] python-versiontools //__version__中使用的普通元组的智能替换 [ ] python-watchdog //Python API和Shell程序,用于监视文件系统事件 [ ] python-wcwidth //可测量宽字符代码的终端列单元格的数量 [ ] python-web2py //全功能Web应用框架,用于开发快速、安全以及可移植Web应用 [ ] python-webpy //适用于Python的Web框架,功能强大而又简单 [ ] python-werkzeug //适用于Python的WSGI实用程序库 [ ] python-whoosh //一个快速的纯Python全文索引,搜索和拼写检查库 [ ] python-ws4py //实现了RFC 6455中定义的WebSocket协议 [ ] python-wsaccel //ws4py和AutobahnPython的加速器 [ ] python-xlib //Python X库旨在成为Python程序的全功能X客户端库 [ ] python-xlrd //供开发人员从Microsoft Excel(tm)电子表格文件中提取数据的库 [ ] python-xlsxwriter //用于创建Excel XLSX文件的Python模块 [ ] python-xlutils //用于同时需要xlrd和xlwt的Excel文件的实用程序 [ ] python-xlwt //创建与MS Excel 97/2000/XP/2003 XLS文件兼容的电子表格文件的库 [ ] python-xmltodict //xmltodict是另一个简易的库,它致力于将XML变得像JSON [ ] python-zope-interface //提供了面向对象编程语言中的接口(interface)实现[ ] ruby //面向对象的脚本语言[ ] tcl //Tool Command Language,一种简单的文本语言2.6.11 Libraries(待完善)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650Audio/Sound ---> //**音频&声卡** -*- alsa-lib ---> //Advanced Linux Sound Architecture(ALSA),提供音频和MIDI功能 [ ] aubio //一种用于从音频信号中提取属性信息的工具 [ ] audiofile //读写许多常见格式的音频文件 [ ] bcg729 //ITU G729 Annex A/B语音编解码器的编码器和解码器的开源实现 [ ] celt051 //CELT格式的超低延迟音频编解码器 [ ] fdk-aac //为数字音频实现MPEG高级音频编码(AAC)编码和解码方案的软件 [ ] libao //跨平台的音频库,允许程序在各种平台上使用简单的API输出音频 [ ] libasplib //Achim的信号处理库,用于数字信号处理 [ ] libbroadvoice //16和32语音编解码器的库 [ ] libcdaudio //提供在播放音频CD时控制CD-ROM操作的功能 [ ] libcddb //用于访问CDDB服务器(freedb.org)上的数据 [ ] libcdio //GNU CD输入和控制库 [ ] libcdio-paranoia //带有纠错功能的CD输入和控制库 [ ] libcodec2 //低比特率语音编解码器(700到3200bit/s之间) [ ] libcue //CUE工作表解析器库 [ ] libcuefile //Musepack的提示文件库 [ ] libebur128 //用于实现响度标准化的EBU R 128标准 [ ] libg7221 //ITU G.722.1和Annex C宽带语音编解码器的库 [ ] libgsm //GSM 06.10有损语音压缩的共享库 [ ] libid3tag //MAD项目中的ID3标签阅读库 [ ] libilbc //internet Low Bitrate Codec(iLBC)免费的语音编解码器 [ ] liblo //POSIX系统的开放声音控制协议的实现 [ ] libmad //高品质的MPEG音频解码器,适合没有浮点单元的系统 [ ] libmodplug //MOD音乐文件解码器 [ ] libmpd //用于访问Music Player守护程序的高级客户端库 [ ] libmpdclient //提供用于连接Music Player Daemon (MPD)的API [ ] libreplaygain //重播增益库 [ ] libsamplerate //计算音频的响度,并根据ReplayGain标准建议dB调整 [ ] libsidplay2 //能播放所有C64单声道和立体声文件格式 [ ] libsilk //一种音频压缩格式和音频编解码器 [ ] libsndfile //用于通过标准库接口读取和写入包含采样声音文件的C库 [ ] libsoundtouch //用于更改音频流或音频文件的速度,音调和播放速率的音频处理库 [ ] libsoxr //用于快速,高质量的一维采样率转换 [ ] libvorbis //Vorbis开源音频解码器Ogg Vorbis的库 [ ] mp4v2 //MP4v2库提供了读取,创建和修改mp4文件的功能 [ ] openal //提供在虚拟3D环境中播放音频的功能 [ ] opencore-amr //自适应多速率窄带和宽带(AMR-NB和AMR-WB)语音编解码器的实现库 [ ] opus //旨在通过Internet进行交互式语音和音频传输 [ ] opusfile //用于解码和基本处理所有Ogg Opus音频流 [ ] portaudio //一个免费的,跨平台的开源音频I/O库 [ ] sbc //音频编解码器,用于连接蓝牙高质量音频设备,例如耳机或扬声器 [ ] spandsp //许多用于电话的DSP功能的库 [ ] speex //Speex是一种开放源代码/免费软件,专为语音设计的音频压缩格式 [ ] speexdsp //Speex的DSP库 [ ] taglib //一个用于读取和编辑几种流行音频格式的元数据的库 [ ] tinyalsa //一个可与Linux内核中的ALSA接口交互的库 [ ] tremor (fixed point vorbis decoder) //Tremor是Ogg Vorbis解码器的定点实现。 [ ] vo-aacenc //包含Advanced Audio Coding(AAC)音频编解码器的编码器实现 [ ] webrtc-audio-processing //基于Google的WebRTC实现的AudioProcessing库Compression and decompression ---> //**压缩和解压缩** [ ] libarchive //用于读取和写入各种流存档格式 [ ] libsquish //使用DXT标准(也称为S3TC)压缩图像 [ ] libzip //用于读取,创建和修改zip存档 -*- lzo //用ANSI C编写的可移植无损数据压缩库 [ ] minizip //用于解压zip文件 [ ] snappy //一个高速、兼容性强的压缩/解压缩库 [ ] szip //Szip是Extended-Rice无损压缩算法的实现 -*- zlib support //选择所需的Zlib库提供程序 zlib variant (zlib) ---> //zlib:标准(解压缩)库 | zlib-ng:zlib的改进版Crypto ---> //**加密** [ ] beecrypt //一个通用的加密库 [ ] botan //C ++的加密库 [ ] CA Certificates //包括CA证书的PEM文件,以允许基于SSL的程序检查SSL连接的真实性 [ ] cryptodev //选择所需的cryptodev实现 [ ] gcr //用于加密UI和访问PKCS#11模块的库 [ ] gnutls //一个安全的通信库,用于实现SSL和TLS协议及其周围的技术 [ ] libassuan //实现Assuan协议,用于大多数较新的GnuPG组件之间的IPC [ ] libgcrypt //LibGCrypt是GNU的基本密码库 [ ] libgpg-error //一个小型库,包含大多数GnuPG相关软件共享的错误代码和描述 [ ] libgpgme //GnuPG Made Easy(GPGME)是一个库,旨在简化应用对GnuPG的访问 [ ] libkcapi //Linux内核Crypto API用户空间接口库 [ ] libksba //CMS和X.509库 [ ] libmcrypt //一个提供统一接口以访问多种加密算法的库 [ ] libmhash //为哈希算法提供统一的接口的免费库 [ ] libnss //Network Security Services(NSS),用于安全的客户端和服务器应用开发 [ ] libscrypt //一个实现安全密码哈希功能“scrypt”的库 [ ] libsecret //用于存储和检索密码和其他机密的库 [ ] libsha1 //一个提供SHA1实现的微型库 [ ] libsodium //一个现代且易于使用的加密库 [ ] libssh //在客户端和服务器端实现SSHv2和SSHv1协议 [ ] libssh2 //实现Internet草案定义的SSH2协议的客户端C库 [ ] libtomcrypt //一个相当全面的模块化便携式密码工具 [ ] libuecc //很小的椭圆曲线密码库 [ ] mbedtls //提供在(嵌入式)产品中包含加密和SSL/TLS功能 [ ] nettle //一个低级别的密码库 -*- openssl support //选择所需的SSL库提供程序 ssl library (openssl) --->//选择OpenSSL或LibreSSL openssl //实现安全套接字层(SSL v2/v3)和传输安全性(TLS v1)以及功能全面的通用加密库 [ ] openssl binary //将openssl二进制文件和关联的帮助程序脚本安装到目标文件系统 [ ] openssl additional engines //安装其他加密引擎库 [ ] rhash //用于计算各种哈希和,例如CRC32,MD4,MD5,SHA1,SHA256,SHA512等 [ ] tinydtls //用于数据报传输层安全性(DTLS)的库,涵盖客户端和服务器状态机 [ ] tpm2-tss //Trusted Computing Group's(TCG)和TPM2 Software Stack(TSS)的OSS实现 [ ] trousers //TCG Software Stack(TSS),用于符合TPM规范1.2版的受信任平台模块 [ ] ustream-ssl //ustream SSL包装器 [ ] wolfssl //一种轻量级,可移植,基于C语言的SSL/TLS库Database ---> //**数据库** [ ] berkeleydb //伯克利数据库,一个非常常见的数据库应用程序库 [ ] cppdb //一个SQL连接库,旨在提供与平台和数据库无关的连接API,类似于JDBC,ODBC [ ] gdbm //一组使用可扩展哈希的数据库例程 [ ] hiredis //一个轻量级的访问redis数据库的c客户端 [ ] kompexsqlite //SQLite的开源C++包装器库 [ ] leveldb //Google编写的快速键值存储库,提供了从字符串键到字符串值的有序映射 [ ] libgit2 //是Git核心方法的可移植的纯C实现,用于将Git功能构建到应用程序中 [ ] mongodb //一个跨平台的面向文档的数据库(NoSQL) -*- mysql support //选择所需的mysql提供程序 mysql variant (oracle mysql) ---> //选择oracle mysql服务器或mariadb服务器 [ ] oracle mysql server //在目标服务器上安装MySQL服务器 [ ] postgresql //一个功能强大的开源对象关系数据库系统 [ ] redis //一个开源的高级键值存储,也被称为数据结构服务器 *** sqlcipher conflicts with sqlite *** //***sqlcipher与sqlite冲突*** -*- sqlite //SQLite是一个小型C库,实现了独立的,可嵌入的,零配置的SQL数据库引擎 [ ] Additional query optimizations (stat3) //向ANALYZE命令和查询计划程序添加其它逻辑 [ ] Enable convenient access to meta-data about tables and queries //启用其他API来访问有关表和查询的元数据 [ ] Enable version 3 of the full-text search engine //全文搜索引擎v3添加到构建中 [ ] Enable the JSON extensions for SQLite //SON扩展添加到构建中 [ ] Enable sqlite3_unlock_notify() interface //启用sqlite3_unlock_notify()接口及其附带的功能 [ ] Set the secure_delete pragma on by default //更改secure_delete编译指示的默认设置 [ ] Disable fsync //关闭fsync()强制数据库立即存储,牺牲掉电以提高性能 [ ] unixodbc //unixODBC Project的目标是开发和推广unixODBC,使其成为非Windows平台的ODBC标准Filesystem ---> //**文件系统** [ ] gamin //文件变更监视器 -*- libconfig //用于处理结构化配置文件的简单库 -*- libconfuse //用C编写的配置文件解析器库 -*- libfuse //FUSE (Filesystem in UserSpacE) [ ] liblockfile //NFS安全锁定库 [ ] libnfs //NFS用户空间实现 [ ] libsysfs //一组基于sysfs的实用程序 [ ] lockdev //用于锁定设备的库 [ ] physfs //PhysicsFS,便携、灵活的文件I/O抽象Graphics ---> //**图形** [ ] assimp //Open Asset Import Library(assimp)导入各种3D格式以统一,作为通用的3D模型转换器 [ ] at-spi2-atk //包含将ATK桥接搭配At-spi2 Dbus服务的库 [ ] at-spi2-core //是GNOME辅助功能项目的一部分 [ ] atk //提供了一套由其他工具集和应用程序实现的辅助功能接口 [ ] atkmm //ATK的C++绑定 [ ] bullet //碰撞检测和刚体动力学库 [ ] cairo //一个2D图形库与多输出设备的支持 [ ] cairomm //cairo的C++绑定 [ ] chipmunk //一个简单、轻便、快速、便携的2D刚体物理C语言编写的库 [ ] exiv2 //一个C++库和命令行程序来管理、读写图像(Exif,IPTC和XMP)的元数据 [ ] exempi //XMP(Extensible Metadata Platform)可扩展元数据平台的实现 [ ] fontconfig //配置和定制字体访问的库 [ ] freetype //一个自由、高品质和便携的字体引擎。 [*] gd ---> //一个图形库,允许代码快速绘制直线、圆弧、文字、剪裁图片,结果将保存为PNG文件 [ ] gdk-pixbuf //图像加载器和定标器 -*- giflib //一个库,用于读取和写入GIF图像 [ ] granite //个扩展GTK+提供了一些有用的小工具和类便于应用开发 [ ] graphite2 //提供复杂的书写系统的跨平台的渲染 [ ] gtkmm3 //GTK 3的C++绑定 [ ] harfbuzz //一个OpenType字体文本整形引擎 [ ] ijs //用于实现光栅的页面图像的传输的协议的库 [ ] imlib2 //提供程序加载,保存并以各种格式的图像 [ ] irrlicht //一个开源的高性能实时3D图形引擎 [ ] jasper //JPEG-2000解码器 -*- jpeg support //选择所需的JPEG库类型 jpeg variant (jpeg-turbo) ---> //JPEG变种(jpeg或jpeg-turbo) [ ] kms++ //一个C++11库内核模式设置。此外,还包括简单的测试工具KMS [ ] lcms2 //Little Color Management Software(CMS)一个色彩管理引擎,特别注重精度和性能 [ ] lensfun //纠正一些文物和用于存储镜头配置文件数据库的库 [ ] leptonica //图像处理和图像分析库 [ ] libart //高性能的2D图形库 [ ] libdmtx //读取和写入的现代ECC200各种数据矩阵条码 -*- libdrm ---> //Direct Rendering Manager(直接渲染管理) -*- radeon //安装AMD/ATI显卡驱动 [ ] amdgpu //安装AMD GPU驱动程序 -*- nouveau //安装NVIDIA显卡驱动程序 [ ] omap (experimental) //安装TI OMAP驱动程序的API(实验用) -*- etnaviv (experimental) //安装Etnaviv/Vivante驱动程序的API(实验用) [ ] exynos (experimental) //安装Samsung Exynos驱动程序的API(实验用) [ ] freedreno //安装Qualcomm Snapdragon驱动程序 [ ] tegra (experimental) //安装NVIDIA Tegra驱动程序的API(实验用) -*- vc4 //安装VC4(Raspberry Pi)驱动程序 [ ] Install test programs //安装libdrm测试程序 [ ] libepoxy //处理的OpenGL函数指针管理的库 [ ] libexif //允许解析EXIF文件,并从这些标签读取数据。 [ ] libfm //一个基于glib/gio的库,提供一些文件管理程序和gtk+/glib中缺少的相关小部件 [ ] libfm-extra //libfm扩展包包括一个库和通过菜单缓存获取所需的其他文件 [ ] libfreeglut //一个替代OpenGL的实用工具包(GLUT)库 [ ] libfreeimage //支持流行的图形图像格式(PNG、BMP、JPEG、TIFF)的开源库 [ ] libgeotiff //一个开源库读、写GeoTIFF的信息标签 [ ] libglew //OpenGL Extension Wrangler Library(GLEW)一个跨平台的C/C ++扩展加载库 [ ] libglfw //OpenGL的上下文创建窗口和接收输入事件的一个开源多平台库 [ ] libglu //Mesa OpenGL实用库 [ ] libgta //一种便携式库,实现了Generic Tagged Array(GTA)通用标记阵列的文件格式 [ ] libgtk3 //GTK+3的图形用户界面库 [ ] libmediaart //负责管理、提取和处理媒体缓存 [ ] libmng //参考库读取、显示、撰写和检查多图像网络图形 -*- libpng //处理(Portable Network Graphics)PNG可移植网络图形的库 [ ] libqrencode //用于在QR码符号数据进行编码一个C库 [ ] libraw //一个原始图像处理库 [ ] librsvg //Scalable Vector Graphics(SVG)可伸缩矢量图形的渲染库 [ ] libsoil //用于上传纹理到OpenGL的一个微小的C库 [ ] libsvg //文件或缓冲区的SVG内容解析器,没有做任何渲染,而是提供基于函数的接口 [ ] libsvg-cairo //提供呈现来自文件或缓冲区SVG内容的功能 [ ] libsvgtiny //SVG的微型实现 [ ] libva //Video Acceleration(VA)视频加速API [ ] libvips //2D图像处理库 [ ] menu-cache //小型库用于应用程序菜单集成 [ ] opencv-2.4 ---- //Open Source Computer Vision(OpenCV)一种用于实时计算机视觉编程的库 [*] opencv3 ---> //OpenCV开源计算机视觉 *** OpenCV modules *** //***OpenCV模块*** [ ] calib3d //opencv_calib3d(相机校准和3D重建)模块 [ ] features2d //opencv_features2d(2D特征框架)模块 [ ] flann //opencv_flann(聚类和多维空间搜索)模块 [ ] highgui //opencv_highgui(高级GUI和媒体I/O)模块 [ ] imgcodecs //opencv_imgcodecs(图像编解码器)模块 [ ] imgproc //opencv_imgproc(图像处理)模块 [ ] ml //opencv_ml(机器学习)模块 [ ] objdetect //opencv_objdetect(对象检测)模块 [ ] photo //opencv_photo(计算摄影)模块 [ ] shape //opencv_shape(形状描述和匹配)模块 [ ] stitching //opencv_stitching(图像拼接)模块 [ ] superres //opencv_superres(超大分辨率)模块 [ ] ts //opencv_ts(测试)模块 [ ] videoio //opencv_videoio(媒体I/O)模块 [ ] video //pencv_video(视频分析)模块 [ ] videostab //opencv_videostab(视频稳定)模块 *** Test sets *** //***测试设置*** [ ] build tests //构建测试 [ ] build performance tests//构建性能测试 *** 3rd party support *** //第三方支持 [ ] ffmpeg support //ffmpeg支持 gstreamer support (none) ---> //gstreamer-0.10或1.x支持 [ ] jpeg2000 support //jpeg2000支持 [ ] jpeg support //jpeg支持 [ ] png support //png支持 [ ] tiff support //tiff支持 [ ] v4l support //linux v4l支持 *** Install options *** //安装选项 [ ] install extra data //安装所使用的CV库和/或演示应用程序的各种数据 [ ] openjpeg //一个开源的JPEG2000编解码器 [ ] pango //用于高质量地渲染国际化的文字 [ ] pangomm //pango的C++绑定 [ ] pixman //Cairo像素管理 [ ] poppler //一个基于xpdf的-3.0代码库PDF渲染库 [ ] tiff ---- //处理Tag Image File Format(TIFF)标签图像文件格式图像 [ ] waffle //一个C库,用于在运行时选择OpenGL API和窗口系统 [ ] wayland //旨在作为X的更简单替代品,更易于开发和维护 [ ] webkitgtk //用于处理视频内容的GStreamer GL元素 [ ] webp //一种新的图像格式,在网络上提供无损和有损压缩的图像 [ ] woff2 //对于WOFF2字体文件格式参考实现,通常用于Web字体 [ ] zbar //QR和条码扫描仪 [ ] zxing-cpp //条形码图像处理的Java实现库,提供编译C++端口Hardware handling ---> //**硬件处理**[ ] acsccid[ ] bcm2835[ ] c-periphery[ ] ccid[ ] dtc (libfdt)[ ] gnu-efi[ ] hackrf[ ] hidapi[ ] lcdapi[ ] let-me-create[ ] libaio[ ] libatasmart[ ] libcec[ ] libfreefare[ ] libftdi[ ] libftdi1[ ] libgphoto2*** libgpiod needs kernel headers >= 4.8 ***[ ] libgudev[ ] libhid[ ] libiio[ ] libinput[ ] libiqrf[ ] libllcp[ ] libmbim[ ] libnfc[ ] libpciaccess[ ] libphidget[ ] libpri[ ] libqmi[ ] libraw1394[ ] librtlsdr[ ] libserial[ ] libserialport[ ] libsigrok[ ] libsigrokdecode[ ] libsoc[ ] libss7-*- libusb[ ] build libusb examples[ ] libusb-compat[ ] libusbgx[ ] libv4l[ ] libxkbcommon[ ] mraa[ ] mtdev[ ] ne10[ ] neardal[ ] owfs[ ] pcsc-lite[ ] tslib[ ] urg[ ] wiringpiJavascript ---> //**Javascript**[ ] angularjs[ ] bootstrap[ ] duktape[ ] explorercanvas[ ] flot[ ] jQuery[ ] jsmin[ ] json-javascriptJSON/XML ---> //**JSON/XML**[ ] benejson[ ] cJSON-*- expat[ ] ezxml[ ] jansson[ ] jose[ ] jsmn[ ] json-c[ ] json-for-modern-cpp-*- json-glib[ ] jsoncpp[ ] libbson[ ] libfastjson[ ] libjson[ ] roxml[ ] libucl-*- libxml2[ ] libxml++[ ] libxmlrpc[ ] libxslt[ ] libyaml[ ] Mini-XML[ ] pugixml[ ] rapidjson[ ] rapidxml[ ] raptor[ ] tinyxml[ ] tinyxml2[ ] valijson[ ] xerces-c++[ ] yajl[ ] yaml-cppLogging ---> //**日志**[ ] eventlog[ ] glog[ ] liblog4c-localtime[ ] liblogging[ ] log4cplus[ ] log4cpp[ ] log4cxx[ ] opentracing-cpp[ ] zlogMultimedia ---> //**多媒体**[ ] bitstream[ ] kvazaar[ ] libaacs[ ] libamcodec[ ] libass[ ] libbdplus[ ] libbluray[ ] libdcadec[ ] libdvbcsa[ ] libdvbpsi[ ] libdvbsi[ ] libdvdcss[ ] libdvdnav[ ] libdvdread[ ] libebml[ ] libhdhomerun*** libimxvpuapi needs an i.MX platform with VPU support ***[ ] libmatroska[ ] libmms[ ] libmpeg2[ ] libogg[ ] libopenh264[ ] libopusenc[ ] libplayer[ ] libtheora[ ] libvpx[ ] libyuv[ ] live555[ ] mediastreamer[ ] x264[ ] x265Networking ---> //**网络**[ ] agent++[ ] alljoyn[ ] alljoyn-base[ ] alljoyn-tcl[ ] alljoyn-tcl-base[ ] azmq[ ] azure-iot-sdk-c[ ] batman-adv[ ] c-ares[ ] canfestival[ ] cgic[ ] cppzmq[ ] curlpp[ ] czmq[ ] daq[ ] davici[ ] filemq[ ] flickcurl[ ] freeradius-client[ ] geoip[ ] glib-networking[ ] grpc[ ] gssdp[ ] gupnp[ ] gupnp-av[ ] gupnp-dlna[ ] ibrcommon[ ] ibrdtn[ ] libcgi[ ] libcgicc[ ] libcoap[ ] libcpprestsdk-*- libcurl[ ] curl binary[ ] enable verbose strings SSL/TLS library to use (OpenSSL) --->[ ] libdnet[ ] libeXosip2[ ] libfcgi[ ] libgsasl[ ] libhttpparser[ ] libidn[ ] libidn2[ ] libiscsi[ ] libkrb5[ ] libldns[ ] libmaxminddb[ ] libmbus[ ] libmemcached[ ] libmicrohttpd[ ] libminiupnpc[ ] libmnl[ ] libmodbus[ ] libnatpmp[ ] libndp[ ] libnet[ ] libnetfilter_acct[ ] libnetfilter_conntrack[ ] libnetfilter_cthelper[ ] libnetfilter_cttimeout[ ] libnetfilter_log[ ] libnetfilter_queue[ ] libnfnetlink[ ] libnftnl[ ] libnice-*- libnl[ ] install tools[ ] liboauth[ ] liboping[ ] libosip2[ ] libpagekite[ ] libpcap[ ] libpjsip[ ] librsync[ ] libshairplay[ ] libshout[ ] libsocketcan[ ] libsoup[ ] libsrtp[ ] libstrophe[ ] libtirpc[ ] libtorrent[ ] libtorrent-rasterbar[ ] libupnp[ ] libupnp18[ ] libupnpp[ ] liburiparser[ ] libvncserver[ ] libwebsock[ ] libwebsockets[ ] lksctp-tools[ ] mongoose[ ] nanomsg[ ] libneon[ ] nghttp2[ ] norm[ ] nss-myhostname[ ] nss-pam-ldapd[ ] omniorb[ ] openldap[ ] openmpi[ ] openpgm[ ] openzwave[ ] oRTP[ ] paho-mqtt-c[ ] qdecoder[ ] qpid-proton[ ] rabbitmq-c[ ] librtmp[ ] slirp[ ] snmp++[ ] sofia-sip[ ] thrift[ ] usbredir[ ] snmp++[ ] sofia-sip[ ] thrift[ ] usbredir[ ] wampcc[ ] websocketpp[ ] zeromq[ ] zmqpp[ ] zyreOther ---> //**其它**[ ] apr[ ] apr-util[ ] armadillo[ ] atf[ ] bctoolbox[ ] bdwgc[ ] boost[ ] capnproto[ ] clang[ ] cblas/clapack[ ] classpath[ ] cmocka[ ] cppcms[ ] cracklib[ ] dawgdic[ ] ding-libs[ ] eigen[ ] elfutils[ ] ell[ ] fftw[ ] flann[ ] flatbuffers[ ] flatcc[ ] gconf[ ] gflags[ ] glibmm[ ] glm[ ] gmp[ ] gsl[ ] gtest[ ] jemalloc[ ] lapack/blas[ ] libargtable2[ ] libatomic_ops[ ] libb64[ ] libbsd[ ] libcap[ ] libcap-ng[ ] libcgroup[ ] libclc[ ] libcofi[ ] libcorrect[ ] libcroco[ ] libcrossguid[ ] libcsv[ ] libdaemon[ ] libee[ ] libev[ ] libevdev[ ] libevent-*- libffi[ ] libgee-*- libglib2[ ] libglob-*- libical[ ] libite[ ] liblinear[ ] libloki[ ] libnpth[ ] libnspr[ ] libpfm4[ ] libplist-*- libpthread-stubs[ ] libpthsem[ ] libpwquality[ ] libseccomp[ ] libsigc++[ ] libsigsegv[ ] libspatialindex[ ] libtasn1[ ] libtommath[ ] libtpl[ ] libubox[ ] libuci[ ] libunwind[ ] liburcu[ ] libuv[ ] lightning[ ] linux-pam[ ] liquid-dsp-*- llvm[ ] AMDGPU backend[ ] lttng-libust[ ] mpc[ ] mpdecimal[ ] mpfr[ ] mpir[ ] msgpack[ ] mtdev2tuio[ ] openblas[ ] orc[ ] p11-kit[ ] poco[ ] protobuf[ ] protobuf-c[ ] qhull[ ] qlibc[ ] riemann-c-client[ ] shapelib[ ] skalibs[ ] sphinxbase[ ] riemann-c-client[ ] shapelib[ ] skalibs[ ] sphinxbase[ ] tinycbor[ ] xapianSecurity ---> //**安全**[ ] libselinux[ ] libsemanage[ ] libsepol[ ] safeclibText and terminal handling ---> //**文字和终端处理**[ ] augeas[ ] enchant[ ] fmt[ ] icu[ ] libcli[ ] libedit[ ] libenca[ ] libestr[ ] libfribidi[ ] libunistring[ ] linenoise-*- ncurses[ ] enable wide char support[ ] ncurses programs() additional terminfo files to install[ ] newt-*- pcre[ ] 16-bit pcre[ ] 32-bit pcre-*- UTF-8/16/32 support in pcre-*- Unicode properties support in pcre[*] pcre2[*] 16-bit pcre2[ ] 32-bit pcre2[ ] popt-*- readline[ ] slang[ ] tclap[ ] ustr2.6.12 Mail1234567[ ] dovecot //开源的IMAP和POP3电子邮件服务器[ ] exim //消息传输代理(MTA)[ ] fetchmail //将邮件从POP和IMAP移至本地计算机的客户端后台驻留程序[ ] heirloom-mailx //可作终端邮件阅读器、邮件编写程序和SMTP客户端[ ] libesmtp //用于通过SMTP发送电子邮件的库[ ] msmtp //SMTP客户端[ ] mutt //一个基于文本的复杂邮件用户代理Mail User Agent(MUA)2.6.13 Miscellaneous123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119[ ] aespipe //AES加密和解密数据块[ ] bc //一种任意精度的数字处理语言,其语法与C相似[ ] clamav //用于检测木马、病毒、恶意软件和其他恶意威胁的防病毒引擎[*] collectd ---> //收集的 match plugins ---> //匹配插件 [ ] empty counter //匹配当前为零的计数器值 [ ] hashed //使用主机名的哈希函数匹配值 [ ] regex //根据正则表达式按其标识符匹配值 [ ] timediff //匹配带有无效时间戳记的值 [ ] value //根据其数据源的值选择值 misc plugins ---> //杂项插件 [ ] aggregation //允许使用一或多个合并函数将多个值聚合为单个值 [*] logfile //将日志消息写入文件或STDOUT/STDERR [ ] logstash //写入格式为logstash JSON事件的日志消息 [ ] notify_email //向配置的收件人发送带有通知消息的电子邮件 [ ] notify_nagios //将通知发送到Nagios,作为被动检查结果 [*] syslog //登录到标准UNIX日志记录机制 [ ] threshold //根据配置的阈值检查值,如果值超出范围,则创建通知 read plugins ---> //阅读插件 [ ] apache //收集Apache的mod_status信息 [ ] apcups //从apcupsd收集UPS统计信息 [ ] battery //收集电池电量,消耗的电流和电压 [ ] bind //收集BIND DNS统计信息 [ ] ceph //来自Ceph分布式存储系统的统计信息 [ ] chrony //从实时NTP服务器收集NTP数据 [ ] cgroups //收集CGroups CPU使用率统计信息 [ ] conntrack //收集Linux连接跟踪表中的条目数 [ ] contextswitch //收集由操作系统完成的上下文切换的数量 [ ] cpu //收集CPU在各种状态下花费的时间 [ ] cpufreq //收集当前的CPU频率 [ ] cpusleep //测量深度睡眠模式下CPU花费的时间 [ ] curl //使用libcurl读取文件,然后根据配置解析它们 [ ] curl-json //使用cURL库查询JSON数据,使用YAJL根据用户配置进行解析 [ ] curl-xml //使用libcurl读取文件并将其解析为XML [ ] df //收集文件系统使用情况信息 [ ] disk //收集硬盘和分区的性能统计信息 [ ] dns //使用libpcap收集DNS流量的统计信息 [ ] drbd //收集单个drbd资源统计信息 [ ] entropy //收集系统上的可用熵 [ ] ethstat //收集单个drbd资源统计信息 [ ] exec //执行脚本并读回该程序打印到STDOUT的值 [ ] fhcount //文件处理统计 [ ] filecount //计算目录及其所有子目录中的文件数 [ ] fscache //收集有关网络文件系统和基于文件系统的缓存结构信息 [ ] gps //报告GPS接收器看到的卫星数量和精度 [ ] hugepages //报告Linux上已使用和空闲的大页面数 [ ] interface //收集有关网络接口流量的信息 [ ] ipc //IPC计数器:使用的信号量,共享内存中分配的段数等 [ ] iptables //从iptables数据包过滤器收集统计信息。 [ ] ipvs //从LVS项目的传输层负载均衡器IP虚拟服务器(IPVS)中提取统计信息 [ ] irq //收集中断数量 [ ] load //收集系统负载 [ ] md //收集软件RAID设备信息 [ ] memcachec //从memcache守护程序查询和解析数据 [ ] memcached //从memcached守护程序收集统计信息 [ ] memory //收集物理内存利用率 [ ] modbus //通过Modbus/TCP从Modbus"从机"读取寄存器值 [ ] mysql //连接到MySQL数据库并发出"显示状态"命令 [ ] netlink //获取接口、qdiscs、类和过滤器的统计数据 [ ] nfs //收集有关网络文件系统使用情况的信息 [ ] nginx //收集nginx守护程序处理的请求数以及按状态收集的当前连接数 [ ] ntpd //查询NTP服务器并提取参数 [ ] olsrd //从olsrd读取有关网状网络的信息 [ ] openldap //从OpenLDAP的cn=Monitor子树中读取监视信息 [ ] openvpn //读取OpenVPN的状态文件以收集统计信息 [ ] ping //使用ICMP"回显请求"确保网络延迟 [ ] postgresql //连接PostgreSQL数据库执行SQL语句,将返回的值转换为"值列表" [ ] processes //收集按状态分组的进程数 [ ] protocols //收集有关网络协议的信息 [ ] sensors //从流明传感器收集数据 [ ] serial //收集串行接口上的流量 [ ] SMART //收集SMART统计信息,特别是负载周期计数,温度和坏扇区 [ ] StatsD //StatsD网络协议,允许客户端报告"事件" [ ] snmp //从SNMP设备读取值 [ ] swap //收集当前写入磁盘的内存量 [ ] table //解析表状结构的纯文本文件 [ ] tail //尾巴日志文件,每一行都有一个或多个匹配项 [ ] tail csv //根据(尾部)CSV格式的文件,解析每一行并提交提取的值 [ ] tcpconns //计算与指定端口之间的TCP连接数 [ ] thermal //读取ACPI热区信息 [ ] uptime //跟踪系统正常运行时间 [ ] users //计算当前登录的用户数 [ ] vmem //收集有关虚拟内存子系统的信息 [ ] wireless //收集WLAN卡的信号质量,功率和噪声比 [ ] zookeeper //从Zookeeper的MNTR命令读取数据 target plugins ---> //目标插件 [ ] notification //创建和发送通知 [ ] replace //使用正则表达式替换标识符的各个部分 [ ] scale //用任意数字缩放(乘)值 [ ] set //设置(覆盖)标识符的整个部分 write plugins ---> //写插件 [ ] csv //将值以逗号分隔值格式写入纯文本文件 [ ] graphite //将收集的数据写入Carbon(Graphite's)存储API [ ] mqtt //向MQTT代理发送指标和/或从MQTT代理接收指标 [ ] network //从其他收集的实例发送/接收值 [ ] rrdtool //将值写入RRD文件 [ ] riemann //将数据发送到流处理和监视系统Riemann [ ] unixsock //打开UNIX域套接字并接受连接,可将命令发送到守护程序并接收信息 [ ] write_http //使用HTTP POST和PUTVAL将收集的值发送到Web服务器 [ ] write_log //将数据写入日志 [ ] write_prometheus //使用嵌入式HTTP服务器以与Prometheus的collectd_exporter兼容 [ ] write_sensu //通过Sensu客户端本地TCP套接字将数据发送到流处理和监视系统Sensu [ ] write_tsdb //发送数据OpenTSDB,可扩展的无主数据库,无共享状态时间序列数据库[ ] domoticz //一个家庭自动化系统,监视和配置各种设备,如:灯、开关、传感器等[ ] empty //在伪终端(PTY)会话下运行进程和应用程序[ ] gnuradio //提供信号处理模块来实现软件无线电[ ] Google font directory //Google字体提供的字体文件[ ] gqrx //使用GNU Radio和Qt GUI工具箱实现的开源无线电(SDR)接收器[ ] gsettings-desktop-schemas //包含GSettings模式的集合,用于由桌面的各个组件共享的设置[ ] haveged //一个易用、不可预测的随机数生成器,基于 HAVEGE 算法[ ] linux-syscall-support (lss) //提供系统调用的头文件[ ] mcrypt //允许开发人员使用各种加密功能,而无需对其代码进行大幅度更改[ ] mobile-broadband-provider-info //移动宽带提供商数据库[ ] proj //可将地理经度和纬度坐标转换为笛卡尔坐标(反之亦然)[ ] QEMU //一种通用的开源计算机仿真器和虚拟器[ ] qpdf //一个命令行程序,可对PDF文件进行结构化,内容保留的转换[ ] shared-mime-info //包含常见类型的核心数据库以及用于扩展它的update-mime-database命令[ ] taskd //任务管理同步守护程序[ ] util-macros //包含M4被所有的使用宏的Xorg包2.6.14 Networking applications (待完善)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269[ ] aircrack-ng[ ] aoetools[ ] apache[ ] argus[ ] arp-scan[ ] arptables[ ] asterisk[ ] atftp[ ] autossh[ ] avahi[ ] axel[ ] babeld[ ] bandwidthd[ ] batctl[ ] bcusdk[ ] bind[ ] bird[ ] bluez-tools[ ] bluez-utils[*] bluez-utils 5.x[*] build OBEX support[*] build CLI client[*] install deprecated tool[*] build experimental obexd plugin[*] build health plugin[*] build midi profile[*] build nfc plugin[*] build health plugin[*] build midi profile[*] build nfc plugin[*] build sap plugin[*] build sixaxis plugin[ ] build tests[*] bmon[ ] boa[ ] boinc[ ] brcm-patchram-plus[ ] bridge-utils[ ] bwm-ng[ ] c-icap[*] can-utils[ ] cannelloni[ ] chrony[ ] civetweb[ ] connman *** connman-gtk needs libgtk3 and a glibc or uClibc toolchain w/ wchar, threads, resolver, d[ ] conntrack-tools[ ] corkscrew[ ] crda[ ] ctorrent[ ] cups[ ] dante[ ] darkhttpd[ ] dehydrated[ ] dhcp (ISC)[ ] dhcpcd[ ] dhcpdump[ ] dnsmasq[ ] drbd-utils[ ] dropbear[ ] ebtables *** ejabberd needs erlang, toolchain w/ C++ ***[ ] ethtool[ ] faifa[ ] fastd[ ] fcgiwrap[ ] flannel[ ] fping[ ] freeswitch *** gerbera needs a toolchain w/ C++, threads, gcc >= 7 ***[ ] gesftpserver[ ] glorytun *** gupnp-tools needs libgtk3 ***[ ] hans[ ] haproxy[ ] hiawatha[ ] hostapd[ ] httping[ ] i2pd[ ] ibrdtn-tools[ ] ibrdtnd[ ] ifenslave[ ] ifplugd[ ] iftop[ ] ifupdown[*] ifupdown scripts[ ] igd2-for-linux[ ] igh-ethercat[ ] igmpproxy[ ] inadyn[ ] iodine[ ] iperf[*] iperf3[ ] iproute2[ ] ipsec-tools[ ] ipset[ ] iptables[ ] iptraf-ng[ ] iputils[ ] irssi[*] iw[ ] iwd[ ] janus-gateway ----[ ] keepalived[ ] kismet[ ] knock[ ] leafnode2[ ] lft[ ] lftp[*] lighttpd[*] openssl support[*] zlib support[*] bzip2 support[*] pcre support[*] webdav support[ ] linknx[ ] links[ ] linphone[ ] linux-zigbee[ ] linuxptp[ ] lldpd[*] lrzsz[ ] lynx[ ] macchanger[ ] memcached[ ] mii-diag[ ] mini-snmpd[ ] minidlna[ ] minissdpd[*] mjpg-streamer[ ] modem-manager[ ] mongrel2[ ] monkey[ ] mosh[ ] mosquitto[ ] mrouted[ ] mtr[ ] nbd[ ] ncftp[ ] ndisc6 tools[ ] netatalk[ ] netcat[ ] netcat-openbsd[ ] netplug[ ] netsnmp[ ] netstat-nat[ ] net-tools[ ] network-manager[ ] nfacct[ ] nftables[ ] nginx ----[ ] ngircd[ ] ngrep[ ] nload[ ] nmap[ ] noip[ ] ntp[ ] nuttcp[ ] odhcp6c[ ] odhcploc[ ] olsr[ ] open-lldp[ ] open-plc-utils[ ] openntpd[*] openobex[ ] openresolv[*] openssh[ ] openswan[ ] openvpn[ ] p910nd[ ] phidgetwebservice[ ] phytool[ ] pimd[ ] pixiewps[ ] pound[ ] pppd[ ] pptp-linux[ ] privoxy[ ] proftpd *** prosody needs the lua interpreter, dynamic library ***[ ] proxychains-ng[ ] ptpd[ ] ptpd2[ ] pure-ftpd[ ] putty[ ] quagga *** rabbitmq-server needs erlang ***[ ] radvd[ ] reaver[ ] rp-pppoe[ ] rpcbind[ ] rsh-redone[ ] rsync[ ] rtorrent[ ] rtptools[ ] rygel[ ] s6-dns[ ] s6-networking[ ] samba4[ ] sconeserver ----[ ] ser2net[ ] shadowsocks-libev[ ] shairport-sync[ ] shellinabox[ ] smcroute[ ] sngrep[ ] snort[ ] socat[ ] socketcand[ ] softether[ ] spawn-fcgi[ ] spice protocol[ ] squid[ ] sshpass[ ] sslh[ ] strongswan ----[ ] stunnel[ ] tcpdump[ ] tcping[ ] tcpreplay[ ] tftpd[ ] thttpd[ ] tinc[ ] tinyhttpd[ ] tor[ ] traceroute[ ] transmission[ ] tunctl[ ] tvheadend[ ] udpcast[ ] uhttpd[ ] ulogd[ ] ushare[ ] ussp-push[ ] vde2[ ] vdr[ ] vnstat[ ] vpnc[ ] vsftpd[ ] vtun[ ] wavemon[*] wget[ ] whois[ ] wireguard[ ] wireless-regdb[ ] wireless tools[ ] wireshark[*] wpa_supplicant[*] Enable nl80211 support[*] Enable AP mode[*] Enable Wi-Fi Display[*] Enable mesh networking[*] Enable autoscan[*] Enable EAP[*] Enable HS20[*] Enable syslog support[*] Enable WPS[*] Install wpa_cli binary[*] Install wpa_client shared library[*] Install wpa_passphrase binary[*] Enable support for old DBus control interface[*] Enable support for new DBus control interface[*] Introspection support[ ] wpan-tools[ ] xinetd[ ] xl2tp[ ] xtables-addons[ ] znc2.6.15 Package managers12345678910111213 *** ------------------------------------------------------- *** *** Please note: *** *** - Buildroot does *not* generate binary packages, *** //Buildroot不会生成二进制软件包 *** - Buildroot does *not* install any package database. *** //Buildroot不会安装任何软件包数据 *** * *** *** It is up to you to provide those by yourself if you *** //如果想使用任何软件包管理器,需要自己提供 *** want to use any of those package managers. *** *** * *** *** See the manual: *** *** http://buildroot.org/manual.html#faq-no-binary-packages *** *** ------------------------------------------------------- ***[ ] opkg //Opkg是基于ipkg的轻量级软件包管理系统,类似于apt/dpkg[ ] rpm //RPM软件包管理器2.6.16 Real-Time1[ ] Xenomai Userspace //Linux实时时钟框架2.6.17 Security12345678910[ ] checkpolicy //SELinux(Security-Enhanced Linux)策略编译器[ ] paxtest //PaX回归测试套件[ ] policycoreutils //SELinux策略程序的集合(包含load_policy、newrole、run_init、secon、semodule、sestatus等)[ ] refpolicy //一个完整的SELinux策略,可以用作各种系统的系统策略,也可以用作创建其他策略的基础[ ] restorecond //一个守护程序,它监视文件创建,然后为该文件设置默认的SELinux文件上下文[*] selinux-python ---> //selinux的python模块 [ ] audit2allow //该模块安装两个程序:audit2allow和audit2why [ ] sepolgen //一个Python模块,可让生成初始的SELinux策略模块模板[ ] semodule-utils //包含用于处理selinux模块的工具:semodule_deps、semodule_expand、semodule_link等[ ] setools //SELinux策略分析软件包:apol、sediff-SELinux、sedta、seinfoflow-SELinux等2.6.18 Shell and utilities123456789101112131415161718192021222324252627282930313233 *** Shells *** //**命令解析器**-*- bash //标准的GNU Bourne shell[ ] dash //非常小的/bin/sh的POSIX兼容shell[ ] mksh //MirBSD Korn Shell,一个紧凑、快速、可靠、安全、又不断扩展的shell[ ] zsh //bash、ksh和tcsh的许多有用功能已合并到zsh中,又增加了许多原始功能 *** Utilities *** //**实用工具**[ ] at //在未来的某个时间点定期执行一次任务(一条/多条命令组合,或脚本)[*] bash completion //添加bash完成基础结构[ ] ccrypt //用于加密和解密文件和流的程序[ ] dialog //从shell脚本显示对话框[ ] dtach //屏幕的分离的功能的工具,可以随意地连接到各会话上[ ] easy-rsa //RSA证书生成、管理工具[ ] file //通过扫描二进制数据中的已知模式来识别文件格式的程序[ ] gnupg //GNU Privacy Guard(GnuPG或GPG),是包含数字签名和证书的加密工具[ ] gnupg2 //gnupg的新版本[ ] inotify-tools //用于监视文件系统事件并对其采取行动[ ] lockfile programs //锁文件的程序[ ] logrotate //一个简单的轮转日志的程序[ ] logsurfer //用于实时监视系统日志并报告事件发生情况的程序[ ] pdmenu //用于Unix的全屏菜单系统[*] pinentry ---> //简单的PIN或短语输入对话框的集合 -*- pinentry-ncurses //pinentry-ncurses工具 [ ] pinentry-gtk2 //pinentry-gtk2工具 [ ] pinentry-qt5 //pinentry-qt5工具[ ] ranger //支持VI快捷键的控制台文件管理器[ ] screen //一个终端切换的软件,可用于终端会话恢复[ ] sudo //旨在允许sysadmin向用户授予有限的root特权并记录root活动[ ] time //GNU时间程序[ ] tini //一个简单但有效的初始化二进制文件,可充当容器的PID 1[ ] tmux //一个终端多路复用软件,使单个终端可以访问和控制多个终端[ ] which //“which”命令程序[ ] xmlstarlet //命令行XML工具包[ ] xxhash //一种非常快速的哈希算法,运行速度受限RAM2.6.19 System tools123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135[ ] acl //POSIX访问控制列表,用于为文件和目录定义更细粒度的自由访问权限[ ] android-tools //包含fastboot和adb实用程序,可使用这些协议与目标设备进行交互[ ] atop //用于Linux的ASCII全屏性能监视器-*- attr //操纵文件系统扩展属性的命令[ ] audit //用于存储和搜索Linux 2.6内核中的审计子系统生成的审计记录[ ] cgroupfs-mount //cgroupfs的挂载和卸载脚本[ ] circus //运行并观看多个进程和套接字[ ] coreutils //所有基本的文件/文本/Shell工具[ ] cpuload //在一定时间内获得直观的CPU负载视图[ ] daemon //其他进程转换为守护程序[ ] dc3dd //GNU dd程序的补丁程序[ ] dcron //基于时间的作业调度程序,具有类似于anacron的功能[ ] ddrescue //一种数据恢复工具[ ] debianutils //特定于Debian的其他程序:add-shell installkernel ischroot等[ ] docker-cli //一个平台,可作为轻量级容器构建,交付和运行应用程序[ ] docker-compose //Docker的多容器编排[ ] docker-containerd //控制runC的守护程序[ ] docker-engine //docker引擎[ ] docker-proxy //一个容器网络模型,提供一致的编程接口和应用程序所需的网络抽象[ ] efibootmgr //Linux用户空间应用程序,用于修改Intel可扩展固件接口(EFI)引导管理器[ ] efivar //设置EFI变量的工具和库[ ] emlog //一个Linux内核模块,可轻松访问进程的最新(且仅最新)输出[ ] ftop //可以监视所有打开的文件和文件系统的进度[ ] getent //用来察看系统的数据库中的相关记录,判定用户是否存在等[ ] htop //用于Linux的交互式文本模式进程查看器[ ] iotop //IBM Power RAID设备的系统程序[ ] iprutils //IBM Power RAID设备的系统实用程序[ ] irqbalance //一个守护程序,可帮助平衡由所有系统cpus的中断产生的cpu负载-*- keyutils //用于控制Linux内核中内置的密钥管理系统-*- kmod //处理内核模块[ ] kmod utilities //安装kmod模块程序:depmod、insmod、lsmod、modinfo、modprobe、rmmod[ ] kvmtool //用于托管KVM guest虚拟机的轻量级工具[ ] libostree //OSTree是用于基于Linux的操作系统的升级系统[ ] lxc //Linux Containers,一种基于容器的操作系统层级的虚拟化技术[ ] mender //用于嵌入式Linux设备的开源无线(OTA)软件更新程序[ ] monit //用于管理和监视UNIX系统上的进程,程序,文件,目录和文件系统[ ] ncdu //具有ncurses接口的磁盘使用情况分析器[ ] nut //Network UPS Tools(NUT),为电力设备提供支持,例如不间断电源等[ ] pamtester //用于测试可插入身份验证模块(PAM)功能的微型程序[ ] polkit //用于定义和处理授权的工具包[ ] procps-ng //标准的信息程序和流程处理工具,如kill、ps、uptime、free、top等[ ] procrank_linux //Android平台开发人员常用的工具,用于找出实际使用了多少内存[ ] psmisc //与/proc相关程序,如pstree,fuser,killall[ ] pwgen //GPL的小型密码生成器,它创建的密码可以很容易地被人记住[ ] quota //执行磁盘配额系统[ ] quotatool //为命令行操作文件系统配额[*] rauc //自动更新控制器,它支持通过网络(OTA)或从磁盘更新嵌入式Linux系统 [*] network support //此选项支持使用libcurl通过网络更新固件 [*] JSON output support //此选项启用对以JSON格式提供输出的支持[ ] rsyslog //功能强大且灵活的syslog实现[ ] runc //一个CLI工具,用于根据OCP规范生成和运行容器[ ] s6 //用于daemontools和runit中的所有进程监视,和进程和守护程序的各种操作[ ] s6-linux-init //一组用于在Linux内核上创建基于s6的初始化系统的简约工具[ ] s6-linux-utils //一组特定于Linux的简约系统程序[ ] s6-portable-utils //一组小型的通用Unix实用程序,通常执行常见的任务,例如cut和grep[ ] s6-rc //基于s6的系统的服务管理器[ ] scrub //以迭代方式在文件或磁盘设备上写入模式,从而使清除的数据更不易恢复[ ] scrypt //使用scrypt进行密钥派生的文件加密程序[ ] smack //Smack(Simplified Mandatory Access Control Kernel)强制访问控制内核[ ] start-stop-daemon //用于控制系统级进程的创建和终止[ ] supervisor //一种允许其用户控制类UNIX操作系统上的多个进程的客户机/服务器系统[*] swupdate //一种可靠的方式来更新嵌入式系统上的软件[*] syslogd & klogd //系统日志守护程序syslogd和klogd[ ] syslog-ng //增强的日志守护程序,支持多种输入和输出方法-*- sysvinit //所有进程的父级/sbin/init的System V样式实现[ ] tar //tar打包和还原[ ] tpm-tools //用于管理和诊断TPM(Trusted Platform Module)的工具[ ] tpm2-abrmd //用于实现TCG的TPM2访问代理(TAB)和资源管理器(RM)的守护程序[ ] tpm2-tools //用于管理和诊断TPM2(Trusted Platform Module 2)的工具[ ] unscd //用于处理正在运行的程序的passwd,组和主机的查找,并为下次查询缓存结果-*- util-linux ---> //各种有用/必要的linux库和实用程序 -*- libblkid //包含用于块设备识别和标记提取的例程 [*] libfdisk //包含操作分区表的例程 -*- libmount //包含用于块设备挂载和卸载的例程 [ ] libsmartcols //包含以表格形式进行屏幕输出的例程 -*- libuuid //含用于生成在本地系统之上可访问对象的唯一标识符的例程 [ ] basic set //安装基本的util-linux二进制文件 [ ] agetty //替代Linux Getty [ ] bfs //SCO bfs文件系统支持 [ ] cal //显示日历或日历的一部分 [ ] chfn/chsh //更改登录shell,真实用户名和信息 [ ] chmem //设置在线或离线的特定大小或范围的内存 [ ] cramfs utilities //压缩ROM文件系统的实用程序(fsck.cramfs,mkfs.cramfs) [ ] eject //弹出可移动媒体 [ ] fallocate //将空间预分配给文件 [ ] fdformat //低级格式化软盘 [ ] fsck //检查并修复linux文件系统 [ ] hwclock //查询或设置硬件时钟(RTC) [ ] ipcrm //删除某些IPC资源 [ ] ipcs //显示有关IPC设施的信息 [ ] kill //向进程发送信号 [ ] last //显示最近登录用户的列表 [ ] line //读一行 [ ] logger //在系统日志中输入消息 [ ] login //在系统上开始会话 [ ] losetup //设置和控制loop设备 [ ] lslogins //显示有关系统中已知用户的信息 [ ] lsmem //列出可用内存的范围及其在线状态 [ ] mesg //控制对终端的写访问 [ ] minix //inix文件系统支持 [ ] more //文件浏览过滤器,供crt查看 [ ] mount/umount //挂载/卸载文件系统 [ ] mountpoint //查看目录是否为挂载点 [ ] newgrp //登录新群组 [ ] nologin //拒绝登录 [ ] nsenter //输入另一个进程的名称空间 [ ] pg //逐页浏览文本文件 [ ] partition utilities //分区实用程序(addpart,delpart,partx) [ ] pivot_root //更改根文件系统 [ ] raw //构建Linux原始字符设备 [ ] rename //重命名文件 [ ] rfkill //用于启用和禁用无线设备的工具 [ ] runuser //运行具有替代用户名和组ID的命令 [ ] scheduling utilities //计划任务程序(chrt,ionice,taskset) [ ] setpriv //使用不同的Linux特权设置运行程序 [ ] setterm //设置终端属性 [ ] su //切换到其它用户 [ ] sulogin //单用户登录 [ ] switch_root //切换到另一个文件系统,将其作为根文件系统 [ ] tunelp //为lp设备设置各种参数 [ ] ul //下划线 [ ] unshare //运行某些与父级不共享的名称空间的程序 [ ] utmpdump //以原始格式转储UTMP和WTMP文件 [ ] uuidd //UUID生成守护程序 [ ] vipw //辑密码、组、影子密码或影子组文件 [ ] wall //向每个人的终端发送消息 [ ] wdctl //显示硬件看门狗状态 [ ] write //向其他用户发送消息 [ ] zramctl //设置和控制zram设备[ ] xen //可构建Xen虚拟机管理程序和工具堆栈[*] xvisor ---> //一个开放源代码的Type-1虚拟机管理程序 Xvisor configuration (Using an in-tree defconfig file) ---> (generic-v7) Defconfig name //要使用的Xvisor defconfig文件的名称 [ ] Create U-Boot image of Xvisor //创建可从Das U-Boot加载的Xvisor映像文件 [ ] Build test device-tree blobs //构建测试设备树blob2.6.20 Text editors and viewers12345678[ ] ed //面向行的文本编辑器,通常在脚本中使用,而不是直接调用[ ] joe //JOE是易于使用的,基于终端的全功能屏幕编辑器[ ] less //出色的文本文件查看器[ ] mc //GNU Midnight Commander是一个视觉文件管理器[ ] nano //一个不错的基于ncurses的编辑器[ ] uemacs //一个小的emacs[*] vim //VIM文本编辑器[*] install runtime //安装VIM runtime(语法突出显示+宏),将大约11MB的数据添加到/usr/share/2.7 Filesystem images(文件系统)12345678910111213141516171819202122232425Filesystem images ---> [ ] axfs root filesystem //XFS格式根文件系统 [ ] btrfs root filesystem //btrfs格式根文件系统 [ ] cloop root filesystem for the target device //clop方式压缩根文件系统 [ ] cpio the root filesystem (for use as an initial RAM filesystem) //cpio方式压缩根文件系统(用作初始RAM文件系统) [ ] cramfs root filesystem //cramf格式根文件系统 [*] ext2/3/4 root filesystem //ext2/3/4格式根文件系统 ext2/3/4 variant (ext4) ---> //ext4格式根文件系统 () filesystem label //文件系统标签 (200M) exact size //根文件系统空间大小 (0) exact number of inodes (leave at 0 for auto calculation) //确切的inode数(从0开始自动计算) (5) reserved blocks percentage //保留块百分比 (保留的供root使用,默认5%) (-O ^64bit) additional mke2fs options //额外的mke2fs选项 [禁用64位文件系统] Compression method (no compression) ---> //压缩方式 [无压缩] [ ] f2fs root filesystem //f2fs格式根文件系统 [ ] initial RAM filesystem linked into linux kernel //初始RAM文件系统链接到Linux内核 [ ] jffs2 root filesystem //jffs2格式根文件系统 [ ] romfs root filesystem //romfs格式根文件系统 [ ] squashfs root filesystem //squashfs格式根文件系统 [*] tar the root filesystem //tar压缩格式根文件系统 Compression method (no compression) ---> //压缩方式 [无压缩] () other random options to pass to tar //传递给tar的其他选项 [ ] ubi image containing an ubifs root filesystem //ubifs格式根文件系统包含ubi镜像 [ ] ubifs root filesystem //ubifs格式根文件系统 [ ] yaffs2 root filesystem //yaffs2格式根文件系统

借此机会,把几个文件系统给记录一下。

1.什么是文件系统文件系统,就是文件的储存方式。简单说,它就是一个门牌系统,为储存设备划分门牌号,每个文件分配一个门牌,然后就能按照门牌找到文件。没有文件系统的硬盘,就是一块荒地。如果有人住在那里,你只能说那里有人住,精确位置你说不出来。只有划分了路牌,你才能说出,这个人住在”人民路15号”,这样才能精确定位。文件系统就是路牌的划分方法。储存设备都需要指定文件系统,计算机才能读写。所谓”格式化”,就是为硬盘安装文件系统。不同的操作系统有不同的文件系统,Linux使用ext4,OSX使用HFS+,Windows使用NTFS,Solaris和Unix使用ZFS。如果计算机不认识某个文件系统,就会显示这块盘无法读写。

2.Windows的文件系统Windows里的文件系统主要有三种:FAT32、NTFS、exFAT。FAT32是最老的文件系统,所有操作系统都支持,兼容性最好。但是,它是为32位计算机设计的,单个文件不能超过2的(32-1)次方个字节,也就是不能超过4GB,分区不能超过8TB。也就是为什么一些U盘无法一次性拷贝4G以上的大文件;NTFS是Windows的默认文件系统,用来替换FAT32,Windows的系统盘只能使用这个文件系统;exFAT可以看作是FAT32的64位升级版,ex就是extended的缩写,表示”扩展的FAT32”,功能不如NTFS,但是解决了文件和分区的大小问题,最大分区可以到8PB;

3.分区表硬盘分区,是指一块硬盘上面,同时存在多个文件系统。每个文件系统管理的区域,就称为一个分区(partition),比如一块100GB的硬盘,可以一半是NTFS分区,另一半是exFAT分区。硬盘必须先分区,才能指定每个区的文件系统。分区大小、起始位置、结束位置、文件系统等信息,都储存在分区表里面。分区表也分成两种所谓硬盘分区,就是指一块硬盘上面,同时存在多个文件系统。每个文件系统管理的区域,就称为一个分区(partition)。比如,一块 100 GB 的硬盘,可以一半是 NTFS 分区,另一半是 exFAT 分区。硬盘必须先分区,才能指定每个区的文件系统。分区大小、起始位置、结束位置、文件系统等信息,都储存在分区表里面。分区表也分成两种格式:MBR 和 GPT。前者是传统格式,兼容性好;后者更现代,功能更强大。一般来说,都推荐使用 GPT格式:MBR和GPT。前者是传统格式,兼容性好;后者更现代,功能更强大。一般来说,都推荐使用GPT。

4.buildroot中提到的几种文件系统

xfs:XFS最早针对IRIX操作系统开发,是一个高性能的日志型文件系统,能够在断电以及操作系统崩溃的情况下保证文件系统数据的一致性。它是一个64位的文件系统,后来进行开源并且移植到了Linux操作系统中。XFS引入分配组、B+树、extent等方法来改进海量高并发小文件场景下性能。btrfs:通常念成Butter FS,Better FS或B-treeFS,由Oracle于2007年宣布并进行中的COW(copy-on-write式)文件系统。继ext3/4文件系统之后,比较强大的Linux文件系统,具有快照,内建磁盘阵列(RAID)支持,支持子卷等功能,允许在线调整文件系统大小。cramfs:一个压缩式的文件系统,它并不需要一次性地将文件系统中的所有内容都解压缩到内存之中,而只是在系统需要访问某个位置的数据的时侯,马上计算出该数据在cramfs中的位置,将其实时地解压缩到内存之中,然后通过对内存的访问来获取文件系统中需要读取的数据。romfs:一种简单的只读文件系统,主要是用来当做初始文件系统来使用的,在嵌入式linux或是uclinux中通常使用这中文件系统来作为引导系统的文件系统,甚至uclinux有时就直接把ROMFS作为其根文件系统,而不是将其作为系统启动中的过渡文件系统。squashfs:一个只读的文件系统,它可以将整个文件系统压缩在一起,存放在某个设备,某个分区或者普通的文件中。如果将其压缩到一个设备中,那么可以将其直接mount起来使用,而如果它仅仅是个文件的话,您可以将其当为一个loopback设备使用。f2fs:Flash-Friendly File System是一种闪存文件系统,主要由三星集团研发,适合Linux内核使用。此文件系统起初是为了NAND闪存的存储设备设计(诸如固态硬盘、eMMC和SD卡),这些设备广泛存在于自移动设备至服务器领域。jffs2:磁盘文件系统(ext2, FAT)设计运行在磁盘上,在运行在闪存上时,需要闪存转换层(Flash Translation Layer), 它的功能就是将底层的闪存模拟成一个具有512字节扇区大小的标准块设备(block device),从而模仿磁盘。这势必带来写操作性能的下降,更好的解决问题的方法就是实现一个特别针对闪存的文件系统,而JFFS2就是一个这样的文件系统。yaffs2:Yet Another Flash File System,是一种类似于JFFS/JFFS2的专门为Flash设计的嵌入式文件系统。与JFFS相比,它减少了一些功能, 因此速度更快、占用内存更少。 ubifs:无序区块映像文件系统(Unsorted Block Image File System),一种用于固态硬盘存储设备的文件系统,它与LogFS相互竞争,是JFFS2的后继文件系统之一。UBIFS在设计与性能上均较YAFFS2、JFFS2更适合大容量的NAND flash。

5.其它提到名词解释

cloop:cloop是一个Linux内核模块,支持压缩回环文件系统。有了它,您可以安装压缩文件系统,如块设备,并在访问时无缝解压缩其数据。cpio:cpio是一个非常古老的归档工具。已逐渐被tar替代,但是有些功能是tar不存在的。

参考资料:exFAT 文件系统指南如何选择文件系统:EXT4、Btrfs 和 XFS深入理解ext4等Linux文件系统JFFS2 文件系统及新特性介绍 - IBMUBI文件系统详细介绍

2.8 Bootloaders(引导程序)123456789101112131415161718192021222324252627282930313233343536Bootloaders ---> [ ] afboot-stm32 //STM32平台的一个非常小的引导加载程序 [ ] Barebox //Barebox引导程序,以前叫做U-Boot v2 [ ] grub2 //GRUB是一个多重引导加载程序 [ ] mxs-bootlets //适用于飞思卡尔iMX23/iMX28 SoC的Stage1引导加载程序 [ ] s500-bootloader //适用于Actions Semiconductor S500 SoC的第一级引导加载程序 [ ] ts4800-mbrboot //TS4800板的第一级引导加载程序 [*] U-Boot //U-boot Build system (Legacy) ---> //构建系统 [遗留] (mx6ull_14x14_evk) U-Boot board name //U-Boot单板名称 U-Boot Version (Custom Git repository) ---> //U-Boot版本 [自定义Git仓库] (https://git.dev.tencent.com/……) URL of custom repository //自定义仓库网址 ① (origin/master) Custom repository version //自定义仓库版本 () Custom U-Boot patches //自定义U-Boot补丁 [*] U-Boot needs dtc //U-Boot设备树可用 [ ] U-Boot needs pylibfdt //U-Boot Python libfdt库可用 [ ] U-Boot needs OpenSSL //U-Boot OpenSSL可用 [ ] U-Boot needs lzop //U-Boot lzop解压缩可用 U-Boot binary format ---> //U-Boot二进制文件格式 [ ] u-boot.ais //TI定义的格式,OMAP-L1系列处理器 [ ] u-boot.bin //常规二进制格式bin [ ] u-boot-dtb.bin //bin格式,包含设备树dtb [ ] u-boot-dtb.img //img格式,包含设备树dtb [ ] u-boot-dtb.imx //imx格式,包含设备树dtb [ ] u-boot.img //img格式,在bin格式上加入包含地址信息的头部 [*] u-boot.imx //imx格式,在bin格式上加入包含DRAM配置信息等的头部 [ ] u-boot-nand.bin //bin格式,适合nand [ ] u-boot.kwb (Marvell) //适用Marvell系列芯片 [ ] u-boot.elf //可执行和链接格式(executable and link format) [ ] u-boot.sb (Freescale i.MX28) //适用飞思卡尔i.MX28 [ ] u-boot.sd (Freescale i.MX28) //适用飞思卡尔i.MX28 [ ] u-boot.nand (Freescale i.MX28) //适用飞思卡尔i.MX28 [ ] Custom (specify below) //自定义[选定后在下面指定] [ ] Install U-Boot SPL binary image //安装SPL到U-Boot [ ] Environment image ---- //镜像环境 [ ] Generate a U-Boot boot script //生成U-Boot启动脚本

①:受限每行字数,该处完整链接为:https://git.dev.tencent.com/weidongshan/imx6ull_uboot.git;

2.9 Host utilities(主机工具)123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566Host utilities ---> [ ] host aespipe //AES加密或解密管道 [ ] host android-tools //包含fastboot和adb实用程序 [ ] host btrfs-progs //btrfs文件系统实用程序 [ ] host cargo //Rust编程语言的包管理器 [ ] host cbootimage //将BCT(引导配置表)镜像写入基于Tegra的设备的Flash中 [ ] host checkpolicy //SELinux编译器 [ ] host checksec //检查可执行文件的属性 [ ] host cmake //构建,测试和打包软件 [ ] host cramfs //生成和检查cramfs文件系统 [ ] host cryptsetup //操作dm-crypt和luks分区以进行磁盘加密 [ ] host dfu-util //下载固件并将其上传到通过USB连接的设备 [ ] host dos2unix //在CRLF和LF之间转换文本文件行结尾 -*- host dosfstools //创建和检查DOS FAT文件系统 -*- host dtc //设备树文件编译、反编译、查看 -*- host e2fsprogs //EXT2/3/4文件系统实现工具 [ ] host e2tools //读写、操作ext2/ext3文件系统中的文件 [ ] host f2fs-tools //用于Flash-Friendly File System的工具(F2FS) [ ] host faketime //伪造的系统时间到程序 [ ] host fwup //可编写脚本的嵌入式Linux固件更新创建者和运行者 [ ] host genext2fs //生成ext2文件系统作为普通(非root)用户 [*] host genimage //给定根文件系统树,生成多个文件系统和闪存映像的工具 [ ] host genpart //生成由命令行参数定义的16字节分区表条目 [ ] host gnupg //GNU Privacy Guard(GnuPG或GPG)加密软件 [ ] host gptfdisk //由gdisk和sgdisk程序组成的文本模式分区工具,用于全局唯一标识符(GUID)分区表(GPT)磁盘 [ ] host imx-mkimage //imx镜像制作工具 [ ] host imx-usb-loader //Freescale i.MX5x/6x/7x/8x和Vybrid SoC USB上下载和执行代码的工具 [ ] host jq //创建/编辑/合并/检查JSON文件 [ ] host jsmin //删除JavaScript文件中注释和不必要的空格 [ ] host lpc3250loader //LPC3250平台上加载/刻录程序 [ ] host lttng-babeltrace //跟踪读写库以及跟踪转换器的应用程序 [ ] host mfgtools //使用Freescale UTP协议通过USB将固件编程到i.MX板 [ ] host mkpasswd //随机密码生成工具 [ ] host mtd, jffs2 and ubi/ubifs tools //构建mtd、jffs2和ubi/ubifs工具 [*] host mtools //用于从Unix访问MS-DOS磁盘而不安装它们 [ ] host mxsldr //通过串行下载协议在Freescale i.MX23和i.MX28 SoC上下载和执行代码的工具 [ ] host omap-u-boot-utils //用于TI OMAP平台生成特定的U-Boot签名镜像文件等的工具 [ ] host openocd //OpenOCD-开源片上调试器 [ ] host opkg-utils //用于opkg包管理器的帮助程序脚本 [ ] host parted //GNU分区调整大小程序 [ ] host pkgconf //为开发框架配置编译器和链接器标志的程序 [ ] host pru-software-support //为某些TI处理器上的PRU单元提供了有用的标头和库,例如:AM3358 [ ] host pwgen //密码生成器 [ ] host python-cython //用于编写Python语言的C扩展的Cython编译器 [ ] host python-lxml //用于处理XML和HTML [ ] host python-six //Six是Python2和3兼容库,目的是编写兼容两个Python版本的Python代码 [ ] host python-xlrd //用于从Microsoft Excel电子表格文件中提取数据的库 [ ] host qemu //一个通用的开源机器模拟器和虚拟器 [ ] host raspberrypi-usbboot //用于Raspberry Pi通过USB启动 [ ] host rauc //用于生成由目标rauc服务处理的固件包 [ ] host rcw //供复位配置字(RCW)编译器,用于构建NXP QoriQ/LS PBL/RCW二进制文件 [ ] host rustc //Rust语言的编译器 [ ] host sam-ba //用于Atmel SAM3、SAM7和SAM9 Soc的编程 [ ] host squashfs //生成SquashFS文件系统的工具 [ ] host sunxi-tools //用于Allwinner A10(又名sun4i)和A13(又名sun5i)设备的工具 [ ] host swig //用于将C和C ++编写的程序与各种高级编程语言连接起来 [ ] host tegrarcm //用于在恢复模式下将代码发送到Tegra设备 [ ] host ti-cgt-pru //为某些TI处理器上的PRU单元提供代码生成工具,例如:AM3358 -*- host u-boot tools //用于Das U-Boot引导程序的配套工具 [ ] Flattened Image Tree (FIT) support //拼合镜像(FIT)支持 -*- host util-linux //各种有用/必要的Linux库和实用程序,像mkfs、mkswap、swapon、fdisk、mount,dmesg等 [ ] host utp_com //用于通过飞思卡尔的UTP协议向硬件发送命令(类似于MFGTools) [ ] host vboot utils //Chromium OS验证了启动实用程序 [ ] host xorriso //将符合POSIX标准的文件系统中的文件对象复制到Rock Ridge增强的ISO 9660文件系统中 [ ] host zip //zip压缩包解压和压缩 [ ] host zstd //快速无损压缩方式2.10 Legacy config options(旧版配置选项)

一些陆续被移除buildroot的配置选项,忽略。

3.Buildroot目录结构

使用一个编译过imx6ull的buildroot,在此基础上分析目录结构。执行dir -AFl --group-directories-first可按先目录、后文件的顺序显示buildroot根目录的所有文件。

在分析目录内容之前,先简单了解下*.mk和Config.in/Config.in.host 这两类文件,能加快后面分析、理解。Config.in/Config.in.host:包含配置信息,即执行make menuconfig,出现选项内容,Config.in用于目标,Config.in.host用于主机;*.mk:根据前面的配置信息执行相应动作;

123456789101112131415161718192021222324arch/ //存放CPU架构相关的配置文件Config.in.arm、Config.in.x86等,以及架构相关的构建脚本 board/ //存放某个具体单板紧密相关的文件,比如内核配置文件、sd卡制作脚本、rootfs覆盖文件等 boot/ //存放各种Bootloaders相关的的补丁*.patch、校验文件*.hash、构建脚本*.mk、配置选项Config.inconfigs/ //存放各个单板的buildroot配置文件dl/ //存放所有下载的程序、源码压缩包、补丁等docs/ //存放PDF、HTML格式的buildroot详细说明fs/ //存放各种文件系统的构建脚本*.mk和配置选项Config.inlinux/ //存放Linux的构建脚本*.mk和配置选项Config.inoutput/ //存放编译后的各种文件,包括所有软件的解压、编译后的现场、交叉编译工具链、生成的内核、根文件系统镜像等package/ //存放所有软件包的构建脚本*.mk、配置选项Config.in,以及软件下载、解压、编译的构建脚本pkg-*.mksupport/ //存放一些为bulidroot提供功能支持的脚本、配置文件system/ //存放制作根文件系统的配置文件,设备节点的模块等toolchain/ //存放制作各种交叉编译工具链的构建脚本*.mk和配置选项Config.inutils/ //存放一些buildroot的实用脚本和工具CHANGES //buildroot修改日志.config //make menuconfig后生成的最终配置文件Config.in //所有Config.in的入口,也是Build options的提供者 Config.in.legacy //Legacy config options的提供者.config.old //上次buildroot的备份,执行make oldconfig将.config.old替换.config COPYING //buildroot版权信息DEVELOPERS //开发人员列表,N后面是开发人员名字,F后面是开发的软件Makefile //顶层Makefile Makefile.legacy //旧的Makefile,为了支持向后兼容README //buildroot简单说明

打开Config.in,可以看到如下内容:12345678910111213141516171819202122232425262728source "arch/Config.in"menu "Build options"menu "Commands"config BR2_WGET string "Wget command" default "wget --passive-ftp -nd -t 3"…… //省略Build options部分内容 source "toolchain/Config.in"source "system/Config.in"source "linux/Config.in"source "package/Config.in"source "fs/Config.in"source "boot/Config.in"source "package/Config.in.host"source "Config.in.legacy"source "$BR2_BUILD_DIR/.br2-external.in"

结合执行make menuconfi显示的一级菜单,可以发现本Config.in串联起了所有Config.in,在用户配置完后,生成.config,.*mk就根据.config的配置内容,进行对应的构建。

配置选项文件路径Target optionsarch/Config.inBuild options./Config.inToolchaintoolchain/Config.inSystem configurationsystem/Config.inKernellinux/Config.inTarget packagespackage/Config.inFilesystem imagesfs/Config.inBootloadersboot/Config.inHost utilitiespackage/Config.in.hostLegacy config options./Config.in.legacy

以上目录中,有几个需要详细说明下,下面开始分析。

3.1 board目录

在The Buildroot user manual的9.1. Recommended directory structure章节,有该目录的推荐结构。根据手册内容,在该目录下创建自定义文件。①:在board/目录下新建hceng/(自定义公司名),再在hceng/下创建imx6ull/(单板名);②:在imx6ull/下,应存放uboot、linux、busybox等的配置文件,在分别设置好BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE、BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE、BR2_PACKAGE_BUSYBOX_CONFIG后,如果修改了配置,分别执行make uboot-update-defconfig、make linux-update-defconfig、make busybox-update-config可以更新该目录下的配置文件。这里的uboot、linux是通过git下载,选择的自带的配置文件,BR2_TARGET_UBOOT_CUSTOM_CONFIG_FILE、BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE也就没有指定,因此没采用把配置文件放在该目录的方法。busybox使用默认配置文件路径package/busybox/busybox.config,也没有移动处理。③:除配置文件,还应放sd卡制作脚本等,参考board/freescale/common/imx/和board/freescale/imx6ulevk/目录,将前面提到用于sd卡制作的genimage.cfg.template和post-image.sh复制到本目录下;最后,在System configuration->Custom scripts to run after creating filesystem images设置脚本路径board/hceng/imx6ull/post-image.sh;④:除了配置文件、sd卡制作脚本,该目录还要存放根文件系统覆盖文件,新建目录rootfs_overlay/,里面可以创建/etc/init.d/S01xx,用于放置开机启动脚本。最后,在System configuration->Root filesystem overlay directories设置覆盖文件路径board/hceng/imx6ull/rootfs_overlay;⑤:除此之外,还可以放各类patches/补丁文件,并在配置文件指定路径;

可以看出,board/就是存放某个具体单板紧密相关的文件,比如内核配置文件、sd卡制作脚本、rootfs覆盖文件等,设置后的目录结构如下:

123456789board/└── hceng    └── imx6ull    ├── genimage.cfg.template    ├── post-image.sh    └── rootfs_overlay    └── etc    ├── init.d    └── S01xx3.2 output目录

output目录下有以下几个目录:build:存放着解压后的各种软件包编译完后的现场;graphs:执行make graph-build等命令后,生成的相关图形化文档;host:制作好的交叉编译工具链;images:各种最终生成的镜像;staging:包含了根文件系统的层次结构,编译生成的所有头文件和库,以及其他开发文件,体积较大;target:已经rootfs_overlay/处理过的根文件系统,但没有创建/dev/下的设备节点;

3.3 package目录

package目录是存放所有软件包构建脚本*.mk、配置选项Config.in的目录,这里添加一个自定义APP,来理解实现原理。

①:在package/目录下,创建一个hceng_app目录;②:在hceng_app/目录下,创建文件Config.in和hceng_app.mk,注意*.mk的文件名不能乱取,只能是app名字,且为小写;Config.in的内容如下:1234config BR2_PACKAGE_HCENG_APP bool "hceng_app" help This is a demo to add local app.

这里的配置变量BR2_PACKAGE_HCENG_APP不能乱取,只能是BR2_PACKAGE_+APP名字大写;bool是变量的类型,选中为ture编译,不选中为false不编译,与Linux Kernel的Kconfig文件规则是一样的;help是在配置界面,按下h出现的帮助提示信息;

hceng_app.mk的内容如下:1234567891011121314151617181920212223242526272829303132333435363738394041################################################################################## hceng_app################################################################################## HCENG_APP_VERSION = 1.0.0# HCENG_APP_SITE_METHOD = local# HCENG_APP_SITE = $(CURDIR)/dl/hceng_appHCENG_APP_VERSION = masterHCENG_APP_SITE_METHOD = git HCENG_APP_SITE = $(call github,hceng,hceng_app,$(HCENG_APP_VERSION))HCENG_APP_ALWAYS_BUILD = YESHCENG_APP_INSTALL_TARGET = YESHCENG_APP_CFLAGS =HCENG_APP_LDFLAGS =OUT_BIN = hceng_appHCENG_APP_MAKE_FLAGS += \ CROSS_COMPILE="$(CCACHE) $(TARGET_CROSS)" \ CC=$(TARGET_CC) \ OUT_BIN=$(OUT_BIN) \ AR=$(TARGET_AR) \ STRIP=$(TARGET_STRIP) \ CFLAGS=$(HCENG_APP_CFLAGS) \ LDFLAGS=$(HCENG_APP_LDFLAGS) \ STAGING_DIR=$(STAGING_DIR) \ TARGET_DIR=$(TARGET_DIR)define HCENG_APP_BUILD_CMDS #$(MAKE) clean -C $(@D) $(MAKE) $(HCENG_APP_MAKE_FLAGS) -C $(@D)endefdefine HCENG_APP_INSTALL_TARGET_CMDS $(INSTALL) -D -m 0755 $(@D)/$(OUT_BIN) $(TARGET_DIR)/usr/binendef$(eval $(generic-package))

需要注意的几点:Ⅰ.严格按照示例的格式,1-5行的样式不能省略,第3行为app名字;Ⅱ.7-8行和11-13行,为获取app的两种方式,二选一即可。7-8行是本地获取,需要提前将app文件放在HCENG_APP_SITE指定的路径,这里为dl/hceng_app;11-13行是git获取,需要提前将app文件放到git仓库,注意HCENG_APP_SITE的格式,它会调用package/pkg-download.mk,三个参数依次为用户名、包名、版本号;Ⅲ.HCENG_APP_BUILD_CMDS是构建过程,给应用源码的Makefile传递编译、链接参数,并调用应用源码的Makefile执行;Ⅳ.HCENG_APP_INSTALL_TARGET_CMDS是编译完成后,自动安装到指定目录;

③:在package/Config.ini中添加:123menu "Private package" source "package/hceng_app/Config.in"endmenu

新创建了一个菜单Private package,显示的配置文件为前面创建的package/hceng_app/Config.in;

④:创建app程序和MakefileAPP参考:123456#include void main(void){ printf("Hello world.\n");}

Makefile参考:123456789101112131415OBJS = hceng_app.oCC = $(CROSS_COMPILE)gccOUT_BIN = hceng_appdep_file = [email protected]: $(OBJS)$(CC) $(LDFLAGS) -g -o $(OUT_BIN) $^%.o: %.c$(CC) $(CFLAGS) -Wp,-MD,$(dep_file) -c -o $@ $ Private package ---> [*] hceng_app;然后执行make hceng_app或make all,将编译和安装自定义APP,可以在output/target/usr/bin/下看到安装的自定义APP,最后重新烧写系统,即可使用自定义APP。

4.buildroot常用命令

在buildroot根目录执行make help,即可获得buildroot常用命令的提示信息,内容如下:12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576Cleaning: - 清理 make clean - 删除编译产生的文件 make distclean - 删除所有非源码文件—(包括.config) Build: - 编译 make all - 编译所有 make toolchain - 编译工具链 make sdk - 编译sdk(Software Development Kit) Configuration: - 配置 make menuconfig - 基于curses的buildroot配置界面(常用) make nconfig - 基于ncursesbuildroot配置界面 make xconfig - 基于Qt的buildroot配置界面 make gconfig - 基于GTK的buildroot配置界面 make oldconfig - 解决所有.config中未解决的符号问题(symbols) make syncconfig - 和oldconfig类似,但会额外更新依赖 make olddefconfig - 和syncconfig类似,但会将新的symbols设为默认值 make randconfig - 所有选项随机配置 make defconfig - 所有选项都询问,如果设置有BR2_DEFCONFIG,则使用它的配置 make savedefconfig - 把当前配置保存到BR2_DEFCONFIG make update-defconfig - 类似savedefconfig make allyesconfig - 所有配置选项都选择yes make allnoconfig - 所有配置选项都选择no make alldefconfig - 所有配置选项都选择default make randpackageconfig - 软件包选项都选择随机 make allyespackageconfig - 软件包选项都选择yes make allnopackageconfig - 软件包选项都选择no Package-specific: - 具体的包操作 make - 编译、安装该pkg以及其依赖 make -source - 下载该pkg所有文件 make -extract - 解压该pkg(解压后放在output/build/pkg名字目录下) make -patch - 给该pkg打补丁 make -depends - 编译pkg的依赖 make -configure - 编译pkg到配置这一步 make -build - 编译pkg到构造这一步 make -show-depends - 显示该pkg的所有依赖 make -show-rdepends - 显示依赖该pkg的所有包 make -show-recursive-depends - 递归显示该pkg的所有依赖 make -show-recursive-rdepends - 递归显示依赖该pkg的所有包 make -graph-depends - 图形化显示该pkg的所有依赖 make -graph-rdepends - 图形化显示依赖该pkg的所有包 make -dirclean - 清除该pkg目录(清除解压目录output/build/pkg名字) make -reconfigure - 从配置这一步开始重新编译pkg make -rebuild - 从构造这一步开始重新编译pkg busybox: - busybox相关 make busybox-menuconfig - 配置busybox界面 uclibc: - uclibc相关 make uclibc-menuconfig - 配置uclibc界面 linux: - linux相关 make linux-menuconfig - 配置linux内核界面 make linux-savedefconfig - 保存linux内核配置 make linux-update-defconfig - 保存配置到BR2_LINUX_KERNEL_CUSTOM_CONFIG_FILE指定路径 Documentation: - 文档 make manual - 生成各种格式的帮助手册 make manual-html - 生成HTML格式的帮助手册 make manual-split-html - 生成split HTML格式的帮助手册 make manual-pdf - 生成PDF格式的帮助手册 make manual-text - 生成text格式的帮助手册 make manual-epub - 生成ePub格式的帮助手册 make graph-build - 生成图形化查看编译时间文件 make graph-depends - 生成图形化查看所有依赖文件 make graph-size - 生成图形化查看文件系统大小文件 make list-defconfigs - 显示拥有的默认配置的单板列表 Miscellaneous: - 杂项 make source - 下载所有要离线编译的源码到dl路径 make external-deps - 列出使用的所有外部包(make show-targets的详细版) make legal-info - 显示所有包的license合规性 make printvars - 打印所有内部指定的变量值 make V=0|1 - 设置编译打印信息(0:安装编译 1:打印编译信息) make O=dir - 指定所有文件(包括.config)输出目录

5.构建示例5.1准备buildroot

以stm32mp157为例(ST首款运行Linux的处理器),展示如何使用buildroot来构建系统的思路。开发板使用的是米尔科技生产的MYC-YA157C。

在开始之前,思考从哪里获取支持MYC-YA157C的buildroot。

①.开发板厂家提供购买了某个开发板厂家的开发板,看其提供的资料有没有buildroot,如果有,请无脑直接使用开发板厂家的,能够为你剩下一大堆时间去做其它的。如果开发板厂家没有提供,比如米尔提供的是Yocto构建系统,目前没有buildroot,继续参考下面的方法。

②.buildroot官网如果使用的是芯片原厂的公版/比较火的开发板,很可能buildroot有原生支持。但buildroot不可能对某个开发板一直维护,因此每个开发板都有生命周期,比如firefly-rk3288开发板,在2016.02加入buildroot,2018.03被移除不再维护,因此我们如果要使用现成的配置文件,就得下载2016.02至2018.03这个时间段之间的buildroot。可以通过查询buildroot的log msg来获取这些变化信息。

我手里这款目前来看,buildroot原生支持没戏。

③.Github搜索作为全球最大的“同性交友”网站,可以去搜搜板子名字,看是否有类似的buildroot仓库,有的话clone下来验证试试。我手里这款还没批量开卖,Github自然没有。

找了一圈,目前应该没有直接支持MYC-YA157C的buildroot,因此需要自己尝试添加该开发板。添加开发板也不是从头开始添加,先尝试找找类似的板子,节约配置时间。在GitHub上,找到一个支持stm32mp157的仓库,在buildroot官网的log msg也搜到了在2019.08添加了stm32mp157_dk的配置文件(STM32MP157C-DK是STM32的原厂公板),到目前也没被移除。这里准备在官方最新buildroot,添加MYC-YA157C单板。

5.2准备交叉编译工具链、U-boot、Linux Kernel

①.交叉编译工具链可以使用开发板厂家提供资料的交叉编译工具链,也可以尝试使用stm32mp157_dk的配置文件所使用的交叉编译工具链。

②.U-boot、Linux Kernel建议直接使用开发板厂家所提供U-boot、Linux Kernel。如果主线U-boot、Linux Kernel有对MYC-YA157C的原生支持,或者知道MYC-YA157C和STM32MP157C-DK2公版的差异且能移植,才考虑用其它的U-boot、Linux Kernel。本文主要是分析buildroot,对U-boot、Linux Kernel的移植不深究,因此这里直接使用开发板厂家所提供U-boot、Linux Kernel。

找到开发板厂家所提供U-boot,创建个uboot-stm32mp目录,将U-boot源码放在里面,压缩为uboot-stm32mp.tar.gz,同时,根据提供的文档,得知U-boot配置文件为stm32mp15_basic_defconfig。同理,对提供的Linux Kernel进行类似操作,得到linux-stm32mp.tar.gz,得知内核配置文件为multi_v7_defconfig,设备树文件为stm32mp157c-myir.dts。注意,源码解压出来一定要有个总文件夹包含源码,不能解压后当前目录就是源码,不然后面buildroot使用时会出错。

5.3设置buildroot

①.下载官方buildroot,使用公板配置文件

获取主线buildroot:12hceng@machine:~/buildroot$ git clone git://git.buildroot.net/buildroothceng@machine:~/buildroot$ git pull

查询公板的配置文件:1234567hceng@machine:~/buildroot$ ls configs/*stm32mp157* configs/stm32mp157_dk_defconfig或hceng@machine:~/buildroot$ make list-defconfigs | grep "stm32mp157" stm32mp157_dk_defconfig - Build for stm32mp157_dk

使用公板的配置文件:1make stm32mp157_dk_defconfig

②.按需修改配置执行make menuconfig进入配置界面,挨个进行修改。

Target options --->和CPU紧密相关,这里和公板使用的同一CPU,这里就不需要修改。

Build options --->修改新配置文件保存路径和名字:

12原:(/work/buildroot/configs/stm32mp157_dk_defconfig)) Location to save buildroot config新:(/work/buildroot/configs/stm32mp157_myir_defconfig)) Location to save buildroot config

Toolchain --->交叉编译工具链可以考虑是开发板厂家提供的,这里先暂时使用公板配置文件的,后面编译如果出了问题再回来修改。

System configuration --->设置根文件系统目录要覆盖/添加的文件路径:

12原:(board/stmicroelectronics/stm32mp157-dk/overlay/)) Root filesystem overlay directories新:(board/stmicroelectronics/stm32mp157-myir/overlay/)) Root filesystem overlay directories

注:配置中出现的新目录/文件,后面统一再创建。

设置制作SD卡启动的脚本配置信息路径:12原:(-c board/stmicroelectronics/stm32mp157-dk/genimage.cfg) Extra arguments passed to custom scripts 新:(-c board/stmicroelectronics/stm32mp157-myir/genimage.cfg) Extra arguments passed to custom scripts

Kernel --->内核的来源可以有多种,比如从kernel官网自动下载,从自定义github仓库下载,或者使用本地内核包。这里选择本地包的方式,以及设置对应的内核配置文件:1234567891011原: Kernel version (Custom tarball) ---> ($(call github,STMicroelectronics,linux,v4.19-stm32mp-r1.5)/linux-v4.19-stm32mp-r1.5.tar) URL of custom kernel tarball () Custom kernel patches Kernel configuration (Using a custom (def)config file) ---> (board/stmicroelectronics/stm32mp157-dk/linux.config) Configuration file path新: Kernel version (Custom tarball) ---> (dl/linux/linux-stm32mp.tar.gz)/linux-v4.19-stm32mp-r1.5.tar () Custom kernel patches Kernel configuration (Using an in-tree defconfig file) ---> (multi_v7) Defconfig name

以及选择对应设备树文件:12原:(stm32mp157c-dk2) In-tree Device Tree Source file names新:(stm32mp157c-myir) In-tree Device Tree Source file names

Target packages --->软件包根据需求添加,这里保持默认即可。

Filesystem images --->根文件系统看了下,也没啥需要特殊修改的,保持默认。

Bootloaders --->U-boot也是有多种来源方式,这里选择本地包的方式:

123456789101112原: U-Boot Version (Custom version) ---> ($(call github,STMicroelectronics,u-boot,v4.19-stm32mp-r1.5)/linux-v4.19-stm32mp-r1.5.tar.gz) URL of custom kernel tarball () Custom U-Boot patches U-Boot configuration (Using an in-tree board defconfig file) ---> (stm32mp15_basic) Board defconfig (board/stmicroelectronics/stm32mp157-dk/uboot-fragment.config) Additional configuration fragment files 新: U-Boot Version (Custom tarball) ---> (dl/uboot/uboot-stm32mp.tar.gz) URL of custom U-Boot tarball () Custom U-Boot patches U-Boot configuration (Using an in-tree board defconfig file) ---> (stm32mp15_basic) Board defconfig () Additional configuration fragment files

Host utilities --->一般保持默认,编译过程中遇到主机缺什么,再来勾选上。

Legacy config options不用看。

最后,保存,退出,执行make savedefconfig将会生成configs/stm32mp157_myir_defconfig。

使用公板的配置文件后,很多配置就可以默认即可,主要关注的是Toolchain、Kernel、Bootloaders。

③.为配置准备文件前面对配置做了一系列修改,新增了不少目录和文件,接下来要依次添加。

准备board目录的单板紧密相关的文件参考stm32mp157-dk/目录,生成自己板子目录:1cp board/stmicroelectronics/stm32mp157-dk/ board/stmicroelectronics/stm32mp157-myir/ -r

修改overlay/boot/extlinux/extlinux.conf:1234567891011原:label stm32mp15-buildroot kernel /boot/zImage devicetree /boot/stm32mp157c-dk2.dtb append root=/dev/mmcblk0p4 rootwait新:label stm32mp15-buildroot kernel /boot/zImage devicetree /boot/stm32mp157c-myir.dtb append root=/dev/mmcblk0p4 rootwait

在生成根文件系统时,board/stmicroelectronics/stm32mp157-myir/overlay/boot/extlinux/extlinux.conf将会添加到根文件系统的/boot/extlinux/下,U-boot在启动内核前,会读取extlinux.conf文件,得知内核、设备树所在路径。

准备U-boot和Linux Kernel12345mkdir dl/uboot/cp uboot-stm32mp.tar.gz dl/uboot/mkdir dl/linux/cp linux-stm32mp.tar.gz dl/linux/5.4 编译、烧写

执行make all,编译完后,将在output/images/生成以下文件:1rootfs.ext2 rootfs.ext4 sdcard.img stm32mp157c-myir.dtb u-boot.img u-boot-spl.stm32 zImage

随后将SD卡接入Linux主机,将sdcard.img写入SD卡(/dev/sdb):1sudo dd if=output/images/sdcard.img of=/dev/sdb

写入完成后,将SD卡插入板子上,启动开关选择SD卡启动,上电即可看到打印输出:

6.使用技巧①.添加启动脚本很多时候,需要系统启动后自动运行一些程序,这就需要添加启动脚本。

在前面的board/stmicroelectronics/stm32mp157-myir/下有个overlay目录,就是切入点。可以利用overlay会覆盖根文件系统相关目录的特性,加上初始化系统方案采用systemV来实现。

在overlay里创建个etc/init.d目录,再在目录里创建S35app之类的文件,开机后即会自动运行该脚本。

②.调整根文件系统大小在前面示例里,Filesystem images ---> (120M) exact size,即根文件系统空间设置的120MB,使用一个8G的SD卡烧写后启动,执行df -h看到整个根文件系统也只是120MB,无法扩展。如果改为Filesystem images ---> (4096M) exact size,生成的sdcard.img文件也将是4G,烧写会非常的慢。

一个可行的方案:设置exact size任然为120MB,修改board/stmicroelectronics/stm32mp157-myir/genimage.cfg,将rootfs分区的size改为4096M。这样生成的sdcard.img文件大小不会变太大,进入系统后,执行resize2fs /dev/mmcblk0p4(rootfs在SD卡第4分区),即可看到系统空间变为了4G。再将resize2fs /dev/mmcblk0p4命令添加到启动脚本里,通过一定的判断,在首次进入系统时执行扩容即可。另外,如果提示没有resize2fs命令,在Target packages --->Filesystem and flash utilities --->[*] e2fsprogs --->[*] resize2fs勾选上即可。

知识共享许可协议本文采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可,欢迎转载,但转载请注明来自hceng blog,并保持转载后文章内容的完整。本人保留所有版权相关权利。


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3